在CI服务器上配置Silverlight项目的文件转换

时间:2013-04-30 06:34:04

标签: .net visual-studio-2010 silverlight-4.0 web-config continuous-integration

我坚持在Silverlight项目中转换配置文件(即ServiceReferences.ClientConfig - 文件)。我已经关注了如何手动编辑.csproj文件以添加转换文件的一些来源(例如this source),但我无法让它在我们的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项目时,ServiceReferences.ClientConfig在CI服务器上生成的XAP文件中仍然未转换。

关于构建定义,据我所知,我还可以。 DeployConfiguration部分中的Processes设置为有效配置。 (如果我将此条目中的配置名称更改为无效的内容 - CI服务器将会抱怨。因此它到目前为止工作......)同一部分中的Transform Configuration Files设置为true。

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:0)

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

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

将项目配置更改为ProductionTest解决了所有问题。