如何在调试模式下禁用Costura.Fody资源嵌入?

Hoo*_*och 12 c# visual-studio fody fody-costura

我正在使用Costura.Fody将所有dll嵌入到我的应用程序集中.

有没有办法在Debug构建模式下禁用Costura.Fody?如何使Costura.Fody仅在Release或自定义构建配置中工作?

Kaj*_*sen 14

一种解决方案可能是检查您的.csproj文件并向Fody相关的行添加条件.像这样的东西:

<Content Include="FodyWeavers.xml" Condition=" '$(Configuration)' == 'Release' " />

<Import Project="..\..\packages\Fody.1.29.4\build\dotnet\Fody.targets" Condition="Exists('..\..\packages\Fody.1.29.4\build\dotnet\Fody.targets') And '$(Configuration)' == 'Release' " />
Run Code Online (Sandbox Code Playgroud)

当然,这主要适用于您不希望任何Fody扩展在某些构建环境中运行的简单用例.

  • 这似乎禁用了所有 Fody 插件。当我有多个 fody 插件时,例如 Costura.Fody 和 ReactiveUI.Fody,它也会禁用 ReactiveUI.fody。对我的案例有什么建议只禁用`Costura.Fody`? (2认同)

tra*_*max 6

默认情况下,Costura.Fody包只会在您的*.csproj文件中添加一行:

  <Import Project="Fody.targets" />
Run Code Online (Sandbox Code Playgroud)

替换为

  <Import Project="Fody.targets" Condition=" '$(Configuration)' == 'Release' " />
Run Code Online (Sandbox Code Playgroud)


Apf*_*cha 6

根据Costura Github 的说法,更好的可能性是打开.csproj并将以下行插入第一个<PropertyGroup>

<DisableFody Condition="'$(Configuration)' == 'Debug'">true</DisableFody>
Run Code Online (Sandbox Code Playgroud)

这样,如果有包更新,您就不必再次修改文件