我有一个项目,我正在尝试使用SlowCheetah。 我创建了我的配置文件(Test.web.config)以及我想要使用的所有转换 (Debug_Mock.config,Debug_SQL.config,Release) 在我的构建配置中我有一个后期构建事件应该将转换后的文件复制到另一个目录但是找不到该文件
(错误xcopy退出代码4)
SlowCheetah似乎没有像我期望的那样转换文件并将其放在输出目录(bin文件夹)中。 有没有人知道为什么它没有发生,也许是某个地方的设置?
仅供参考:此流程适用于具有相同项目的另一台计算机。至于我可以告诉同样的设置。但我可能没有找到正确的位置。
答案 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 。 如果缺少此文件,请尝试以下步骤:
这将重新创建丢失的文件。
答案 2 :(得分:10)
启用构建详细程度(Tools -> Options -> Projects and Solutions
-> Build and Run
)并查看正在运行的版本与不正常版本之间的差异。
据我所知,slow-Cheetah支持app.config
文件的配置转换,但是
目前没有调试web.configs
。它应该将已转换的web.config
文件放在项目的bin
文件夹中,但您的项目仍然会从根文件夹中的config file
读取。请查看前/后构建活动
http://sedodream.com/CommentView,guid,68b7e248-b9f5-4d07-bdfe-eb037bcf2cbb.aspx
您可以在执行时请求调试的Web配置转换支持 https://github.com/sayedihashimi/slow-cheetah/issues/39
尝试重新安装Slow-Cheetah。
答案 3 :(得分:4)
如上所述重新安装后,我需要将subType
和transformOnBuild
节点添加到我的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。
这是我的问题-花了三个小时对其进行调试...