2

我坚持在 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。

任何想法,将不胜感激!

4

1 回答 1

0

我自己发现了问题 - 问题是我很愚蠢。

基本上,解决方案中活动解决方案配置的名称是正确的,即ProductionTest. 转换文件的名称为ServiceReferences.ProductionTest.ClientConfig. 到现在为止还挺好。但是,Silverlight 项目的项目配置Release的名称是. 所以 TransformXML 尝试使用(不存在的)转换文件ServiceReferences.Release.ClientConfig。由于存在正确的配置文件是 的条件BeforeBuild,因此 TransformXML 永远不会执行 - 我也不会有任何错误消息。

更改项目配置以ProductionTest解决所有问题。

于 2013-04-30T16:42:32.570 回答