我有一个项目,我想使用SlowCheetah的。 我创建了我的配置文件(Test.web.config)和所有我想用(Debug_Mock.config,Debug_SQL.config,释放)在我的构建配置我有一个生成后事件应该复制转换文件的转换到另一个目录,但该文件无法找到
(错误XCOPY与代码4退出)
SlowCheetah似乎并没有被转化文件并将其放置在输出目录(bin文件夹)像我期望的那样。 没有人有任何想法,为什么它没有发生,也许一个设置的地方?
FYI:这个过程可以在另一台机器上,同一个项目。 至于我可以告诉相同的设置也是如此。 不过,我可以不看在正确的位置。
对我来说,我发现问题是在配置文件中的缓慢猎豹属性组是在那里,如果它存在检查部分的下方。
因此,修复只是移动属性组上面那条线的地方,这将允许变换按预期运行。
把这个:
<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" />
检查你的项目,如果有一个名为SlowCheetah包含文件夹SlowCheetah.Transforms.targets。 如果该文件丢失,请尝试以下步骤:
- 右键单击解决方案
- “管理的NuGet包解决方案......”,浏览SlowCheetah
- 点击“管理”
- 取消您的项目,并单击“确定”
- 点击“管理”了
- 选择您的项目,并再次单击“确定”
这将重新创建丢失的文件。
之后如上所述重新安装,我需要在添加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>
请注意,您必须安装SlowCheetah的Visual Studio扩展性和 SlowCheetah NuGet包的问题进行了改造工作的项目。
随着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包被重新安装,我的问题就解决了。
SlowCheetah 3.2.20增加了一个,呃,“功能”,旨在尊重Visual Studio中的“不要复制”文件设置。 所以,如果你没有你的config文件设置为“一直拷贝”或“复制如果较新的”,它不会将它们复制到输出文件夹。
见https://github.com/Microsoft/slow-cheetah/issues/182的一些细节。
这是我的问题 - 花了三个小时的调试吧...