SlowCheetah not transforming file on build

后端 未结 7 2013
青春惊慌失措
青春惊慌失措 2020-12-25 11:35

I have a project I am trying to use SlowCheetah for. I have created my config file (Test.web.config) and all the transformations I want to use (Debug_Mock.config, Debug_SQL.

相关标签:
7条回答
  • 2020-12-25 11:45

    Please Note, you have to install the SlowCheetah Visual studio extension AND the SlowCheetah nuget package for the project in question for the transformation to work.

    0 讨论(0)
  • 2020-12-25 11:52
    • Enable build verbosity (Tools -> Options -> Projects and Solutions -> Build and Run) and see the difference between the version that is working and the one that is not.

    • To my knowledge, slow-Cheetah supports config transforms for the app.config files but not web.configs on debug at present. It should put a transformed web.config file in the bin folder of your project but your project still reads from the config file in the root folder. Please have a look at pre/post build events at http://sedodream.com/CommentView,guid,68b7e248-b9f5-4d07-bdfe-eb037bcf2cbb.aspx.

    • You can request for web config transform support on debug at
      https://github.com/sayedihashimi/slow-cheetah/issues/39

    • Try re-installing Slow-Cheetah.

    0 讨论(0)
  • 2020-12-25 11:57

    For me I found the issue was that the slow cheetah property group in the config file was below the section where it checked if it existed.

    So the fix was simply to move the property group above that line somewhere which would allow the transform to run as expected.

    Put this:

    <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>
    

    Above this:

    <Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
    
    0 讨论(0)
  • 2020-12-25 11:57

    SlowCheetah 3.2.20 added a, uhh, "feature", designed to respect the "Do Not Copy" file setting in Visual Studio. So if you don't have your .config file set to "Copy Always" or "Copy if Newer", it won't copy them to the output folder.

    See https://github.com/Microsoft/slow-cheetah/issues/182 for some details.

    This was my issue - spent three hours debugging it...

    0 讨论(0)
  • 2020-12-25 12:09

    After a reinstall as described above, I needed to add the subType and transformOnBuild nodes to my csproj file, and it started working for me.

    <None Include="App.config">
      <SubType>Designer</SubType>
      <TransformOnBuild>true</TransformOnBuild>
    </None> 
    <None Include="App.QA.config">
      <DependentUpon>App.config</DependentUpon>
      <IsTransformFile>True</IsTransformFile>
    </None>
    
    0 讨论(0)
  • 2020-12-25 12:09

    With SlowCheetah 2.5.15 and Visual Studio 2015, I had to uninstall the nuget package and then manually remove the following from the relevant .csproj file:

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

    and

    <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>
    

    Once this was done and the SlowCheetah nuget package was reinstalled, my problem was resolved.

    0 讨论(0)
提交回复
热议问题