问题标签 [fody-costura]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1959 浏览

c# - 无法将 Costura.Fody 与 ConfuserEx 一起使用

我想用 来减小装配尺寸Costura.Fody,这工作得很好,事实上所有的 dll 都合并到一个装配中,但我有一个ConfuserEx我无法解决的问题。

特别是当ConfuserEx.exe打开. 我收到此错误:Confuse.exe

[DEBUG] 构建管道... [INFO] 解决依赖关系... [错误] 无法解决“MyApp.exe”的依赖关系。异常:dnlib.DotNet.AssemblyResolveException:无法解析程序集:E:\ Source\Public\Confuser2\dnlib\src\DotNet\IAssemblyResolver.cs:riga 113 在 Confuser.Core.ConfuserEngine.Inspection(ConfuserContext context) 在 e:\Source\Public\Confuser2\Confuser.Core\ConfuserEngine.cs:riga 264 11:15 失败,0:00 过去。

这仅在我使用时才会发生Costura.Fody,因为现在bin/debug文件夹中只有“减少”的程序集Costura,我没有ConfuserEx正在寻找的 dll。

我该如何处理这种情况?

谢谢。

0 投票
0 回答
367 浏览

c# - 试图在程序中嵌入额外的 dll

我有一个使用PdfiumPdfiumViewer的程序。一切正常,但我必须将 pdfium.dll 和 PdfiumViewer.dll 与我的 .exe 放在同一目录中才能正常工作。如果缺少 pdfium.dll,我会收到“无法加载 DLL 'pdfium.dll'”。如果 PdfiumViewer.dll 丢失,我会得到TypeInitializationException.

我有 Costura.Fody 作为我程序的一部分,我认为它会将这些 dll 包装到 .exe 中。有什么理由不这样做(或者我可以这样做吗?)

0 投票
0 回答
5399 浏览

c# - 更改 Fody weavers.xml 位置

VisualStudio 2017,最新的 Fody nuget 包,WinForms,C#

当您安装https://github.com/Fody/FodyFodyWeavers.xml时,它会在项目主目录中自动生成。

如何更改此文件的位置?

我尝试更改项目设置<Content Include="Properties\FodyWeavers.xml" />和 Fody.targets 中的内容 <ProjectWeaverXml>$(ProjectDir)\Properties\FodyWeavers.xml</ProjectWeaverXml>

但是在编译时我仍然收到以下错误:

错误 Fody:找不到 weavers 文件的路径。搜索“C:\Users\Thomas\Desktop\projects\FodyWeavers.xml”、“C:\Users\Thomas\Desktop\projects\fodytest\FodyWeavers.xml”。

0 投票
2 回答
1114 浏览

c# - Costura Fody 使用 FodyIsolated.dll 引发错误

我已经构建了一个 WPF 应用程序,并使用 Costura.Fody 将其组合成一个 exe。这一直有效到今天,我知道的唯一变化是我升级了 Visual Studio(社区版到 15.7.2)。

现在,它在构建时立即引发错误:无法加载文件或程序集'<directory of my app>\packages\Fody.3.0.3\netclassictask\FodyIsolated.dll'或其依赖项之一。不支持操作。(来自 HRESULT 的异常:0x80131515)

我尝试了很多事情:

  • 检查 FodyIsolated.dll 是否被阻止(不是)
  • 升级到最新版本的 Costura.Fody Nuget
  • 卸载并重新安装 Costura.Fody Nuget
  • 降级到以前工作的版本
  • 将 <loadFromRemoteSources enabled="true"> 添加到我的 app.config
  • 将 <loadFromRemoteSources enabled="true"> 添加到 Visual Studio 安装目录中的 devenv.exe.config
  • 在 Internet 选项中将存储我的应用程序的网络驱动器的 IP 添加到本地 Intranet 区域(应用程序存储在网络驱动器上)

上述解决方案之一适用于面临此问题的其他所有人,但没有一个对我有帮助。我希望有人可以给我另一种选择,或者指出我哪里出错了。

需要明确的是,如果我删除 Costura.Fody,应用程序构建良好,但显然所有 dll 都与 exe 分开。

0 投票
0 回答
681 浏览

c# - 由于使用 Costura.Fody 的嵌入式组装而处理 deps.json

我有一个引用 .NET Standard 程序集的 .NET Core 控制台应用程序。
我还为 Costura.Fody 和 FodyWeavers.xml 文件添加了 NuGet 包(见下文)。

这构建得很好,一切看起来都很好,但是当我尝试运行我的应用程序 ( dotnet "MyApp.exe") 时,它抱怨它找不到我在 MyApp.deps.json 文件中提到的嵌入程序集的文件。

错误信息是:

未找到应用程序依赖项清单 (MyApp.deps.json) 中指定的程序集:
包:'My.Assembly',版本:'1.0.0.0'
路径:'My.Assembly.dll'

这是有道理的,如果我手动从该文件中删除提及,则运行该应用程序可以正常工作,但我的问题是:有没有办法告诉 Visual Studio 或 Costura 从我的 deps.json 文件中删除该程序集的提及,以便我不要每次构建后都不需要编辑它?虽然我可以在后期构建期间使用一个工具来编辑它,但我更喜欢内置的方式。我没有在 Fody github 页面上看到任何文档...

FodyWeavers.xml 供参考:

0 投票
1 回答
1197 浏览

c# - Fody NuGet 包如何在编译过程结束时合并程序集?

最近我遇到了一个用于修改 .NET 程序集的 NuGet 包,特别是,有一个用于 Fody 包的 Costura NuGet“插件”,它在 C# 编译器完成后合并程序集。

我找不到对 .csproj 文件的任何修改(除了 NuGet 导入),它显示了在构建程序集后执行的任务。

我想知道 Fody 如何能够在构建后运行代码而无需在任何地方进行任何明显的配置更改。

0 投票
1 回答
806 浏览

c# - 引用已与 Fody/Costura 合并的 .dll

我有一个引用使用 Costura/Fody 构建的 .dll 的应用程序,即 dll 嵌入了所有引用。当我运行控制台应用程序时,来自 dll 的引用不会被解包,因此控制台应用程序会抛出一个异常,说缺少 .dll 等,因为它需要这些资源才能运行。即当使用 Costura/Fody 构建时,AssemblyA.dll 会嵌入 MyAssembly.dll。ConsoleAppC 引用并嵌入了 AssemblyA.dll,但也需要 MyAssembly.dll 才能运行。我确实在 ConsoleAppC 中有对 MyAssembly.dll 的引用,以便它可以编译(但 CopyLocal 设置为 false)。我在想,当 AssemblyA.dll 的嵌入式资源被解压缩时,ConsoleAppC 可以使用 MyAssembly.dll 吗?

这不起作用,但我的方案是否以任何方式有效,或者您只能使用来自 ConsoleAppC 的嵌入式资源,而不是嵌入在 AssemblyA.dll 中的资源?

提前感谢您的帮助

麦克风

0 投票
1 回答
1788 浏览

c# - C# Costura.Fody - 资源未嵌入

几年前,我使用了 Costura.Fody,它在通过 NuGet 安装后完美运行。昨天我在家里试了一下,首先得到了错误,即 Fody 丢失(我刚刚通过 NuGet 安装了 Fody)。然后我错过了 FodyWeavers.xml,这是我在另一篇文章中提到的那样创建的。之后它对我来说很好,我只需要开始调试,dll就会包含在exe中。今天我想在工作中做同样的事情,所以我安装了 Costura.Fody,但这次也安装了 Fody。结果我得到了两个错误:

第一:找不到名为“PropertyChanged”的织布工

第二:FodyWeavers.xml 缺失

我安装了 PropertyChanged.Fody 并创建了 FodyWeavers 文件。现在我可以运行我的应用程序,但没有嵌入 dll。

几年前我用过Win7 + VS Community 15

主场:赢 10 + VS 15

工作中:Win7 + VS Community 15

请帮忙 :(

编辑

我尝试了很多方法,但我无法让它发挥作用。我设法找到了一篇博文,让我在没有第三方库的情况下将 dll 嵌入到 exe 中。我强烈建议使用它而不是 Costura,因为似乎网上有几个人现在对这个库有问题

链接到我的 <3 http://adamthetech.com/2011/06/embed-dll-files-within-an-exe-c-sharp-winforms/

此致!

0 投票
2 回答
1287 浏览

c# - 使用 exe 编译非托管 DLL

我正在尝试使用 costura fody 在我的 C# 可执行文件中嵌入一堆 DLL,但是我在使用 2 个 DLL 时遇到了一些问题。我正在使用 NAudio 库和 NAudio.Lame 库,虽然两个 DLL 都可以完美编译到 exe 中,但 NAudio.Lame 包添加了 dll“libmp3lame.64.dll”和“libmp3lame.32.dll”,我就是无法用exe编译。我尝试在 Costura 节点下的 FodyWeavers.xml 文件中添加以下内容:

XML 不会改变 exe 的文件大小,所以我认为它什么也没做。

我还尝试将 DLL 的“构建操作”更改为“嵌入式资源”,虽然可执行文件的大小显着增加,但如果我在与 exe 相同的文件夹中启动没有 DLL 的程序,我会得到一个运行时 DLLNotFoundExeption。

编辑:我现在注意到我只需要 64 位 dll 程序就可以在我的计算机上运行,​​但我也不能只添加那个 dll

EDIT2:我尝试使用以下代码为 AssemblyResolve 设置事件:

这次它留下了 System.BadImageFormatException,因为我认为这段代码只适用于托管 DLL。

0 投票
1 回答
516 浏览

c# - Fody Costura C++ 运行时

我的 c# 程序使用了一个用 c++ 编写的 dll,而这个 dll 是由 Fody Costura 嵌入的。

它适用于安装了 Visual C++ 运行时或msvcp140.dll工作文件夹中有依赖项的机器。

msvcp140.dll是否可以使用 Fody Costura嵌入和依赖于可执行文件?我尝试这样做没有成功。