我坚持在 Silverlight 项目(即ServiceReferences.ClientConfig
-file)中转换配置文件。我已经关注了一些关于如何手动编辑 .csproj 文件以添加转换文件的来源(例如这个来源),但我无法让它在我们的 CI 服务器上工作。
对 .csproj 文件的更改是:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="BeforeBuild" Condition="exists('ServiceReferences.$(Configuration).ClientConfig')">
<TransformXml Source="ServiceReferences.ClientConfig" Destination="$(TargetDir)\ServiceReferences.ClientConfig" Transform="ServiceReferences.$(Configuration).ClientConfig" />
<ItemGroup>
<Content Remove="ServiceReferences.ClientConfig" />
<ContentWithTargetPath Include="$(TargetDir)\ServiceReferences.ClientConfig">
<TargetPath>ServiceReferences.ClientConfig</TargetPath>
</ContentWithTargetPath>
</ItemGroup>
</Target>
<Target Name="AfterBuild" />
如果我在本地客户端上的 VS2010 中构建 Silverlight 项目,我的配置文件的转换工作正常。我可以打开生成的 XAP 文件并ServiceReferences.ClientConfig
查看它是否已转换。因此,我排除了转换文件的问题。
但是当我在 CI 服务器上构建我的 Silverlight 项目时,在 CI 服务器ServiceReferences.ClientConfig
上生成的 XAP 文件中仍然没有转换。
关于构建定义,据我所知,我还可以。DeployConfiguration
在该Processes
部分设置为有效配置。(如果我将此条目中的配置名称更改为无效的名称 - CI 服务器会抱怨。因此到目前为止它仍然有效......)Transform Configuration Files
在同一部分中设置为 true。
任何想法,将不胜感激!