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

本文关键字:Fody Costura 资源 调试 模式 | 更新日期: 2023-09-27 18:33:42

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

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

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

一种解决方案可能是检查您的.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' " />

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

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

  <Import Project="Fody.targets" />

将其替换为

  <Import Project="Fody.targets" Condition=" '$(Configuration)' == 'Release' " />

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

<DisableFody Condition="'$(Configuration)' == 'Debug'">true</DisableFody>

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