【问题标题】:Disable Fody Costura禁用 Fody Costura
【发布时间】:2015-10-15 13:08:02
【问题描述】:

有没有办法禁用 Fody Costura?我需要执行一些故障排除,我想知道 Fody Costura 不是问题的一部分。我宁愿禁用它,而不是删除 nuget,这将是一种解决方案。

从 Fody 配置中删除 <Costura/> 会出现以下错误,因为我没有使用任何其他编织器:

Fody: No configured weavers. It is possible you have not installed a weaver or have installed a fody weaver nuget into a project type that does not support install.ps1. You may need to add that weaver to FodyWeavers.xml manually. eg. <Weavers><WeaverName/></Weavers>. see https://github.com/Fody/Fody/wiki/SampleUsage

【问题讨论】:

    标签: fody fody-costura


    【解决方案1】:

    是的,您可以从FodyWeavers.xml 中注释掉或删除<Costura />

    【讨论】:

    • 它不起作用,因为它是我使用的唯一编织器。
    • 这对我有用 - 我在重新安装 Costura 时偶然发现,FodyWeavers.xml 文件已被清空。检查 IL Manifest 确认程序集没有嵌入,并且构建输出显示 Costura 没有找到任何编织者。
    • 它也适用于我。但我必须重建项目才能让它工作。
    【解决方案2】:

    AFAIK,无法关闭 Costura,但您可以手动排除所有参考:

    <Costura>
        <ExcludeAssemblies>
            Foo
            Bar
        </ExcludeAssemblies>
    </Costura>
    

    注意它不包括.dll/.exe 扩展名(它是Foo 而不是Foo.dll

    此外,如果您要嵌入本机/非托管 dll,请确保将这些库的 Build Action 切换为 None

    更多信息: https://github.com/Fody/Costura#excludeassemblies

    【讨论】:

    • 我认为这应该是公认的答案。如果您只安装了一个编织器(刚刚测试过),它确实有效,它很干净,向上兼容,不会与项目文件混淆,并且会给您错误消息“错误 8 Fody:需要重新构建应用来自 'C:\Foo\Bar\FodyWeavers.xml'.FooBar" 的更改。但是猜猜你必须做什么:-)
    • 您可以为项目安装当前版本的 Costura。有一次,当我安装了一个较新的版本时,我在“重新激活”它时没有注意到它(Newtonsoft.Json 出现了巨大的问题)。
    【解决方案3】:

    打开 .csproj 文件,搜索“fody”,然后删除包含它的所有标签。比如

     <Error Condition="!Exists('..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.1.29.4\build\dotnet\Fody.targets'))" />
      </Target>
      <Import Project="..\packages\Fody.1.29.4\build\dotnet\Fody.targets" Condition="Exists('..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" />
    

    那些在这个标签之后

    <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    

    【讨论】:

    • 如果你在包管理器控制台中使用了Install-CleanReferencesTarget命令行,还有更多的行需要删除:同时删除&lt;UsingTask TaskName="CosturaCleanup" .... &lt;/UsingTask&gt;行中的所有内容
    • 是的,卸载脚本似乎忽略了这些行。
    【解决方案4】:

    https://github.com/Fody/Costura/issues/143#issuecomment-378612705

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

    【讨论】:

    • 此解决方案禁用一切。我只想禁用 Costura。
    【解决方案5】:

    我知道这是一个较旧的线程,但我发现在 FodyWeavers.xml 中包含一个空的 IncludeAssemlies 部分也很成功。 Costura 则不包含任何内容。

     <IncludeAssemblies>
      </IncludeAssemblies> 
    

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      相关资源
      最近更新 更多