- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个我编写的小 exe,它使用 LibGit2Sharp
并尝试使用 Costura.Fody
来嵌入所有内容,所以我只有一个 exe 可以分发(实际上,还有两个配置文件,但没关系。
问题似乎是 LibGet2Sharp.dll
对 git2-1196807.dll
有相当明确的引用,我似乎无法弄清楚如何嵌入后者在前者可以使用的方式。我已经尝试了几件事,但我认为我最好的尝试是:
所有这些 .dll 都从解决方案的 packages
文件夹中复制并设置为 Build Action = Embedded Resource
和 Copy to Output Directory = Do Not Copy
.
LibGit2Sharp 引用设置为 Copy Local = false
,我已经尝试了 FodyWeavers.xml 中的简单路径:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
</Costura>
</Weavers>
更复杂的是:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
<Unmanaged64Assemblies>
Costura64\LibGit2Sharp
Costura64\git2-1196807
</Unmanaged64Assemblies>
<Unmanaged32Assemblies>
Costura32\LibGit2Sharp
Costura32\git2-1196807
</Unmanaged32Assemblies>
</Costura>
</Weavers>
但是,我总是报错,不是在打开exe的时候,而是在点击最先使用git库的按钮的时候:
...'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'git2-1196807': The specified module could not be found. (Exception from HRESULT: 0x8007007E)...
我做的一些事情给了我一个错误,即 LibGet2Sharp
dll 是不可访问的(而不是关于 git2-1196807
的错误),但我认为那是就在我使 Fody 瘫痪的时候。
如果您能提供任何建议,我将不胜感激;这让我感到困惑。如果我将 git2-1196807.dll
文件放在部署位置“.\lib\win32\x86”和 64 位等效文件中,那么它运行良好,但这与使用 costura.fody 的意义不符.
想法?
最佳答案
在 this question 的帮助下解决了这个问题并且不得不添加一些我自己的作品。
基本上,您需要在项目中创建一对文件夹,分别称为 Costura32 和 Costura64,并将相应版本的 dll 放在那里,并将它们设置为“嵌入式资源”。然后编织者可以在构建解决方案时将它们包含在 exe 中。
在我的例子中,我使用的是 LibGit2Sharp dll,它依赖于 git2-15e1193.dll,所以我将其作为我的解决方案的一部分:
对于每个 dll,我都将构建操作设置为嵌入式资源:
最后,FodyWeavers.xml 是:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<costura IncludeDebugSymbls='false'>
<Unmanaged32Assemblies>
git2-15e1193
</Unmanaged32Assemblies>
<Unmanaged64Assemblies>
git2-15e1193
</Unmanaged64Assemblies>
</costura>
</Weavers>
确保在 FodyWeavers.xml 文件中的 dll 名称中保留 .dll。
关于c# - costura.fody 用于引用另一个 dll 的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079595/
有没有办法禁用Fody Costura?我需要执行一些故障排除,并且我想知道Fody Costura不是问题的一部分。我宁愿禁用它而不是删除nuget,这是一种解决方案。 从Fody配置中删除会产生以
首先:我是一个完全的初学者。我在一个解决方案中有两个项目。一个项目是控制台应用程序,它是从 Windows 窗体应用程序调用的。现在我想将它们添加到一个可执行文件中。有人告诉我 Fody/Costur
我无法让 Costura 加载我的项目需要运行的 native dll。这是一个完整的 native dll,因此它不是项目中的引用。 我已经将dll添加到我项目的costura32文件夹中,并将其设
我的一位 friend 向我提出了一项挑战,要求我解压包含 Fody.Costura 的程序集。该程序集具有作为资源嵌入的 dll 依赖项。我尝试使用 dotPeek 提取此 .zip 资源,并使用此
我的一位 friend 向我提出了一项挑战,要求我解压包含 Fody.Costura 的程序集。该程序集具有作为资源嵌入的 dll 依赖项。我尝试使用 dotPeek 提取此 .zip 资源,并使用此
我正在 vs2019 中创建一个 winform 应用程序,通过报告查看器创建报告并且它运行良好。但是,当我使用 Fody/Costura 嵌入 dll 时,报告查看器以某种方式给出了错误。 我也尝试
我创建了一个解决方案,它使用 Costura.Fody nuget 包将引用的程序集合并为嵌入式资源。我想要这个,以便我可以为我的应用程序创建一个 exe。在我添加对 SkiaSharp 的引用(特别
目前,我有一个 C++/CLI 包装器项目,它引用了一些 OpenCV dll。然后,我创建的 C# 库项目引用包装器项目。 使用 Costura,包装器正确地合并到我的 C# 库中,但 OpenCV
我正在使用 Costura.Fody 将所有 dll 嵌入到我的应用程序程序集中。 有没有办法在调试构建模式下禁用 Costura.Fody?如何使 Costura.Fody 仅在发布或自定义构建配置
我有一个引用 .NET Standard 程序集的 .NET Core 控制台应用程序。 我还为 Costura.Fody 添加了一个 NuGet 包和一个 FodyWeavers.xml 文件(见下
我已经使用 nuget 包将 costura.fody 安装到我的项目中。我更新了 FodyWeavers.xml 文件: 当我重建它并尝试在没有 dll 的单独 PC 上运行 exe 时,它不
我正在使用 Nlog,最近决定使用 Fody/Costura 将我的 DLL 嵌入到最终的可执行文件中。我注意到,在使用下面推荐的实例声明启动和创建 Logger 时,我在调用 GetCurrentC
我有一个我编写的小 exe,它使用 LibGit2Sharp 并尝试使用 Costura.Fody 来嵌入所有内容,所以我只有一个 exe 可以分发(实际上,还有两个配置文件,但没关系。 问题似乎是
我尝试将类库的 dll 嵌入到我的 exe 中。我使用 visual studio 2019 和 .net 5。我在一个解决方案中创建了两个项目一个是类库(dll),第二个是控制台应用程序两者都针对
这个问题的相关性超出了我自己的情况,因为任何拥有本地化应用程序并且必须提供独立 EXE 的人都会遇到这个问题——他们会想要使用 ILMerge(或 Costura 或一些自制解决方案)来放置本地化 D
请问是否可以使用Fody-Costura ,它将依赖项嵌入可执行文件和 Obfuscar , 一起进行混淆。 目前我正在苦苦挣扎,因为 Costura 的 Visual Studio 2017 中的
我是一名优秀的程序员,十分优秀!