问题标签 [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.
c# - Costura 未加载本机 Dll
我无法让 Costura 加载我的项目需要运行的本机 dll。这是一个完整的本机 dll,因此它不是项目中的引用。
我已将 dll 添加到项目中的 costura32 文件夹中,并将其设置为嵌入式资源。
当我运行项目时,我可以看到 costura 已将 dll 提取到 %temp%\costura\1D5629B8D94FC3E9B53C7AB358A0E123\32\native.dll
该项目仍然无法找到错误无法加载DLL的文件
在 procmon 中查看时,我可以看到它在本地文件夹中查找该文件,然后在 %temp%\costura\1D5629B8D94FC3E9B53C7AB358A0E123\native.dll 中查找,但找不到它。它似乎没有在“32”文件夹中寻找它。
我在配置文件 Unmanaged32Assemblies、PreloadOrder 中尝试了几个选项,但它们都有相同的结果。
我看不出我在这里做错了什么。
c# - 将 cefsharp 与 fody 一起使用
我正在使用 fody costura 将我的所有文件组合成一个可执行文件。在我的项目中,我使用的是 cefsharp,它正在寻找带有 en-US.pak 文件的 locales 文件夹。
我收到以下错误:
fody 正在以下文件夹中查找文件
我应该只创建语言环境文件夹并从嵌入式资源复制 en-US.pak 吗?
添加 locales\en-US.pak 文件的正确方法是什么?
c# - 同一个库的不同版本的插件冲突
我主要创建附加到不同父软件的程序;其他人和公司也为父软件制作插件。当两家公司使用同一个第三方库的不同版本时,这会成为一个问题,它们被加载到同一个 AppDomain 中,因为加载它们的是父软件。
让我们使用 Newtonssoft.Json.dll,因为它很常见。如果我使用 12.0.1 而其他一些公司使用 11.0.2 则存在冲突。如果他们的插件首先加载,那么我会得到版本 11.0.2,因为它已经加载,这可能会导致我的应用程序崩溃。如果我的先加载,反之亦然;他们的将获得 12.0.1 并可能崩溃。两者都可以自己正常工作,但是如果两者都安装了,则其中一个或另一个会产生致命错误。
有没有办法封装这些以便它们独立加载?我最近发现了Costura.Fody并认为这可能就是答案。但是,即使它是从嵌入式而不是磁盘加载的,它仍然会加载具有相同名称的程序集。我还注意到它在内部将名称更改为“Costura.Newtonsoft.Json”,但是当我在调试中尝试它时,它仍然加载为“Newtonsoft.Json”。我想知道是否有任何方法可以以某种方式更改 .NET 加载依赖项的名称或身份,以便它认为它是不同的,并且可以与同一应用程序域中的其他插件隔离。比如让它加载为 ABC.Newtonsoft.Json.dll 然后另一家公司可以加载为 DEF.Newtonsoft.Json.dll 或其他东西。
无论如何,寻找一些永久处理这个问题的好方法......非常感谢任何帮助。
.net-core - Fody Costura 没有编译成 exe
我有一个具有许多依赖项的 .Net Core 控制台应用程序。我的想法是使用 .Net weaver ( Costura ) 将所有依赖项嵌入到可执行文件中。然而,似乎正在发生的事情是它正在创建一个 dll,并将所有资源嵌入其中,然后让可执行文件具有 dll 的单一依赖项。FodyWeavers.xml
看起来像这样:
有没有办法让 Costura 将所有依赖项编织到 exe 中?
c# - Costura.Fody 未嵌入 .pdb
我正在使用 Costura.Fody 将我的整个应用程序嵌入到一个 .exe 文件中。但由于某种原因,.pdb 没有被嵌入:
在项目的README中,它表示默认情况下有一个IncludeDebugSymbols
要在 FodyWeavers.xml 中指定的参数true
。尽管如此,我还是尝试将其明确设置为true
:
但没有运气。有任何想法吗?
c# - 如何从 Fody/Costura 中排除文档文件?
在我的解决方案中使用 Fody/Costura 时,生成的可执行文件比Copy Local
选项设置为True
.
当我检查debug
和release
目录时,我看到一堆 XML 文件文件,这些文件对应于那些在 Build 属性中将“生成 XML 文档”选项设置为true
. 其中一些相当大。所以我的猜测是,Fody/Costura 也会以某种方式提取和打包这些文件,从而导致文件更大。这个评价正确吗?
如果是这样,有没有一种安全的方法来排除这些?
c# - 将 Nlog 与 Costura Fody 一起使用时如何解决错误
我正在使用 Nlog,最近决定使用 Fody/Costura 将我的 DLL 嵌入到最终的可执行文件中。我注意到,在使用下面推荐的实例声明启动和创建 Logger 时,我在调用 GetCurrentClassLogger 时遇到异常(请参见下面的异常)。如果我卸载 Costura/Fody,异常就会消失。Nlog 会消耗该错误,但每次我启动我的代码时,它都会因该错误而中断,我想解决它。
我已经验证,如果没有安装 Fody/Costura,错误就会消失,当安装 Fody/Costura 时,错误会返回。
我想解决错误,并且每次运行代码时都不让 IDE 停止。我也不想忽略特定异常,以防它发生在与 Nlog 无关的其他代码中。抛出的异常是 System.ArgumentException,它可能发生在其他代码中。
c# - 在使用 Fody Costura 和 Topshelf 和 Ninject 的特定机器上缺少参考
我已经构建了一个在客户端机器上运行的小型 Windows 服务,连接到本地数据库并将该数据发布到 Web 服务。我将 Topshelf 与 Ninject 一起使用,代码本质上是样板文件,直接来自模板。我添加了 Fody Costura 以使其易于部署,并已成功将其部署在许多客户端计算机上。但是,在我正在使用的一台客户端计算机上,当我尝试运行应用程序或安装服务时,我收到以下错误:
由于某种原因,这台特定机器(Windows 7、.NET 4.6.2)找不到包含缺失方法的所谓嵌入式 Topshelf.Ninject.dll。我尝试在多个位置添加 dll,删除并读取了引用,并将应用程序剥离到最低限度,但这台机器仍然存在问题。在这台随机机器上错过了这一随机参考会发生什么情况?
c# - Nunit 测试项目 net45 使用 Costura.Fody 在 Release 中成功并在 Debug 中失败并出现异常
环境:
与 2017.9 /net45 相比
使用 Costura.Fody v3.3.3
在 Nunit 测试项目中,我运行以下命令:
我得到错误
OneTimeSetUp:System.TypeInitializationException:“”的类型初始化程序引发了异常。----> System.IO.FileNotFoundException:无法加载文件或程序集'System.Private.CoreLib,版本 = 4.0.0.0,文化 = 中性或其依赖项之一。该系统找不到指定的文件。
我FodyWeavers.xml
在测试项目的根目录中添加了该文件,如Fody.Costura中所述
其中包含:
如何解决Debug中的错误?