SlowCheetah没有在构建时转换文件

时间:2012-11-21 19:37:34

标签: xml web.config-transform slowcheetah xdt-transform config-transformation

我有一个项目,我正在尝试使用SlowCheetah。 我创建了我的配置文件(Test.web.config)以及我想要使用的所有转换 (Debug_Mock.config,Debug_SQL.config,Release) 在我的构建配置中我有一个后期构建事件应该将转换后的文件复制到另一个目录但是找不到该文件

(错误xcopy退出代码4)

SlowCheetah似乎没有像我期望的那样转换文件并将其放在输出目录(bin文件夹)中。 有没有人知道为什么它没有发生,也许是某个地方的设置?

仅供参考:此流程适用于具有相同项目的另一台计算机。至于我可以告诉同样的设置。但我可能没有找到正确的位置。

7 个答案:

答案 0 :(得分:30)

对我来说,我发现问题是配置文件中的慢速猎豹属性组低于检查它是否存在的部分。

所以修复只是将属性组移到该行的某个位置,这将允许转换按预期运行。

把这个:

<PropertyGroup Label="SlowCheetah">
  <SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.10.3\tools\))</SlowCheetahToolsPath>
  <SlowCheetah_EnableImportFromNuGet Condition=" '$(SC_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
  <SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
  <SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>

高于此:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />

答案 1 :(得分:15)

签入项目,是否存在名为 SlowCheetah 的文件夹,其中包含文件 SlowCheetah.Transforms.targets 。 如果缺少此文件,请尝试以下步骤:

  1. 右键点击解决方案
  2. “管理解决方案的NuGet包...”,浏览SlowCheetah
  3. 点击“管理”
  4. 取消选择您的项目,然后点击“确定”
  5. 再次点击“管理”
  6. 选择您的项目并再次点击“确定”
  7. 这将重新创建丢失的文件。

答案 2 :(得分:10)

答案 3 :(得分:4)

如上所述重新安装后,我需要将subTypetransformOnBuild节点添加到我的csproj文件中,它开始为我工作。

<None Include="App.config">
  <SubType>Designer</SubType>
  <TransformOnBuild>true</TransformOnBuild>
</None> 
<None Include="App.QA.config">
  <DependentUpon>App.config</DependentUpon>
  <IsTransformFile>True</IsTransformFile>
</None>

答案 4 :(得分:4)

请注意,您必须为相关项目安装SlowCheetah Visual Studio扩展 AND SlowCheetah nuget包,才能使转换正常进行。

答案 5 :(得分:3)

使用SlowCheetah 2.5.15和Visual Studio 2015,我必须卸载nuget包,然后从相关的.csproj文件中手动删除以下内容:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />

<PropertyGroup Label="SlowCheetah">
  <SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.15\tools\))</SlowCheetahToolsPath>
  <SlowCheetah_EnableImportFromNuGet Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
  <SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
  <SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>

一旦完成并重新安装了SlowCheetah nuget包,我的问题就解决了。

答案 6 :(得分:1)

SlowCheetah 3.2.20添加了一个“功能”,旨在尊重Visual Studio中的“请勿复制”文件设置。因此,如果您没有将.config文件设置为“始终复制”或“如果更新则复制”,则不会将它们复制到输出文件夹。

有关详细信息,请参见https://github.com/Microsoft/slow-cheetah/issues/182

这是我的问题-花了三个小时对其进行调试...