如果开发人员能否看到生产凭据并不重要,您可以使用内置的 Visual Studio 10 配置转换。如果这是您要查找的内容,请按照以下步骤操作:
1.在文件资源管理器中导航到您的 Azure 项目文件夹
2. 复制 ServiceConfiguration.cscfg
3. 将副本重命名为 ServiceConfiguration.Base.cscfg
4. 对于每个构建配置(例如 Dev、Staging、Production),创建一个 ServiceConfiguration..cscfg 文件。在这些文件中,您可以使用普通的config transformation syntax
5. 在文本编辑器中打开您的 .ccproj 文件
6.找到如下节点,
<ItemGroup>
<ServiceDefinition Include="ServiceDefinition.csdef" />
<ServiceConfiguration Include="ServiceConfiguration.cscfg" />
</ItemGroup>
并用这个替换它(你必须编辑这个块以匹配你的构建配置):
<ItemGroup>
<ServiceDefinition Include="ServiceDefinition.csdef" />
<ServiceConfiguration Include="ServiceConfiguration.cscfg" />
<None Include="ServiceConfiguration.Base.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
<None Include="ServiceConfiguration.Dev.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
<None Include="ServiceConfiguration.Staging.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
<None Include="ServiceConfiguration.Production.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
</ItemGroup>
7.在 .ccproj 文件的末尾添加以下内容,就在 </Project> 上方:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
<Target Name="BeforeBuild">
<TransformXml Source="ServiceConfiguration.Base.cscfg" Transform="ServiceConfiguration.$(Configuration).cscfg" Destination="ServiceConfiguration.cscfg" />
</Target>
8.如果您使用的 CI 服务器没有安装 Visual Studio 10,您可能需要复制 C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Web 文件夹并它的内容从开发机器到服务器。
更新:作为@SolarSteve noted,您可能需要将命名空间添加到您的ServiceConfiguration.*.cscfg 文件中。以下是 ServiceConfiguration.Base.cscfg 的示例:
<sc:ServiceConfiguration serviceName="MyServiceName" osFamily="1" osVersion="*" xmlns:sc="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<sc:Role name="MyRoleName">
<sc:Instances count="1" />
<sc:ConfigurationSettings>
<sc:Setting name="DataConnectionString" value="xxx" />
</sc:ConfigurationSettings>
</sc:Role>
</sc:ServiceConfiguration>