问题标签 [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 投票
0 回答
726 浏览

c# - 在没有 Nuget 的情况下安装 Costura Fody

我希望能够拥有 Costura Fody 的功能(将本机程序集合并到我的可执行文件中),但我不想使用 Nuget 的“Install-Package Costura.Fody”。我怎样才能做到这一点?我理想的解决方案是能够只包含https://github.com/Fody/Costura/tree/master/src上的一些源代码,但我对内部工作原理的了解不足以知道哪些文件可以做到这一点可能我也不知道是否需要进一步的步骤来“安装”这个包。

0 投票
1 回答
487 浏览

fody - 未找到 Costura.Fody 嵌入式库命名空间

我正在使用 Costura.Fody 将我的项目中的一堆引用嵌入到一种主库中,以消除在我的 API 中引用每个库的需要。Costura.Fody 输出显示我的库的其他部分正在嵌入,但是当我引用 DLL 时,嵌入的命名空间没有显示,因此不会构建依赖项目。

在文本编辑器中打开 DLL 显示嵌入的命名空间DLL 中,但在 Visual Studio 中无法检测到...

我正在使用默认的 Costura.Fody weavers 设置。有什么建议吗?请?

0 投票
1 回答
92 浏览

servicestack - ServiceStack 和 Fody Costura

我对 ServiceStack 很陌生,所以如果命名不是 100%,请提前道歉。

我创建了一个测试自托管应用程序,ServiceStack 服务与主线代码在同一个程序集中。都好。

然后,我将代码移至生产使用,服务现在位于主代码的单独程序集中。最初,我有一个用于确保一切正常的测试工具,然后是一个引用相同程序集的 Windows 服务。相当肯定这将是正常使用。

测试工具工作正常,但是对于生产使用,我使用 Fody Costura 将程序集嵌入到单个可执行文件中(我的想法是更容易从开发机器复制到生产机器)。

使用 Fody Costura 将程序集嵌入到可执行文件中时,ServiceStack 在 Init() 期间返回错误(路径无效)。我已经对此进行了测试,似乎 ServiceStack Service 类需要位于可以加载的物理程序集文件中,而不是资源中。

是否有已知的解决方法,或者我是否需要将代码保留在自己的程序集中以使 ServiceStack 工作?

提前致谢。克雷格

0 投票
1 回答
426 浏览

c# - NReco FFPMegConverter:路径不是合法形式

我正在使用 NReco FFMPegConverter,当我尝试获取缩略图时,出现错误:

这是我收到错误的代码行。

在上面的示例中,filep = "C:\Users\me_000\Downloads\GRoma\G.mp4" 和 tempFileName = "C:\Users\me_000\Desktop\f480b6c0.jpeg",当在调试模式下直接从本地视图复制时.

还有另一个线程在 SO 上引用了这个问题,并且规定的解决方案是设置 FFMPegToolPath 属性。

我已经尝试过它以及它的各种版本,但我仍然得到错误。如果有帮助,我正在使用 1.1.2.0 版本。

无论我在调用 FFMpegToolPath、ExtractFFmpeg 等方面做什么,都会弹出错误。

任何帮助是极大的赞赏。

0 投票
2 回答
3254 浏览

c# - costura.fody 用于引用另一个 dll 的 dll

我有一个我写过的小 exe,它使用LibGit2Sharp并试图用来Costura.Fody嵌入所有内容,所以我只有一个 exe 可以分发(实际上,也有两个配置文件,但没关系)。

问题似乎是对LibGet2Sharp.dll有相当坚定的参考git2-1196807.dll,我似乎无法弄清楚如何以前者可以使用的方式嵌入后者。我已经尝试了几件事,但我认为我最好的尝试是:

所有这些 .dll 都从解决方案的packages文件夹中复制并设置为Build Action = Embedded Resourceand Copy to Output Directory = Do Not Copy

将 .dll 明确添加到项目中

LibGit2Sharp 参考设置为Copy Local = false,我尝试了 FodyWeavers.xml 中的简单路线:

更复杂的是:

但是,我总是得到一个错误,不是在打开 exe 时,而是当我单击第一次使用 git 库的按钮时:

...'LibGit2Sharp.Core.NativeMethods' 抛出异常。---> System.DllNotFoundException:无法加载 DLL 'git2-1196807':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)...

我所做的一些事情给了我一个错误,即LibGet2Sharpdll 无法访问(而不是关于 的错误git2-1196807),但我认为那只是我削弱 Fody 的时候。

我将不胜感激您能提供的任何建议;这让我很困惑。如果我将git2-1196807.dll文件放在部署位置“.\lib\win32\x86”和 64 位等效文件中,那么它运行良好,但这违背了使用 costura.fody 的意义。

想法?

0 投票
0 回答
485 浏览

c# - 使用 Fody Costura 将多个托管和非托管 dll 合并为单个 dll

我将多个第三方托管和非托管 dll 嵌入到一个 dll 中。

该单个 dll 在运行时被拾取并注入到另一个主机应用程序中Assembly.Load ,整个事情应该作为带有插件的主机工作。(只是为了澄清)

我让它适用于所有 dll(托管、非托管和混合),除了一个:VideoOS.Platform.SDK.Export,我在运行时得到 dll not found 异常,该 dll 来自 Milestone NVR SDK

我试过了:

  • 将其作为 IncludeAssemblies、Unmanaged32Assemblies 和 Unmanaged64Assemblies
  • 切换:压缩,磁盘上的临时文件
  • 手动从资源中加载它:AppDomain.CurrentDomain.AssemblyResolve
  • 用(Reflector、DotPeek、ILSpy)反编译库本身都会出现问题,所以我认为可能是一些他们无法反编译的 pinvokes 或类似的东西。

笔记:

  1. 当 dll 与主机应用程序 exe 位于同一文件夹中时,整个过程有效,但在嵌入时无效
  2. 我遇到了一个引用库的问题,该库在放入 Unmanaged32Assemblies 时开始工作已解决 OK
0 投票
2 回答
970 浏览

c# - 如何防止引用程序集的嵌入式依赖项被复制到 Visual Studio 中的输出文件夹?

我有:

  1. A.dll - 第三方程序集
  2. B.dll - 我自己的类库程序集
  3. C.exe - 我自己的可执行文件

我正在使用Costura.Fody NuGet 包A.dll嵌入到B.dll中,并且C.exe具有对 B.dll 的二进制引用

(A.dll 嵌入在 B.dll 中)<-- C.exe

然而,当我构建 C.exe 时,A.dll 出现在输出文件夹中,尽管已经嵌入到 B.dll 中(它也被复制到输出文件夹中)。我不希望将本质上是两个 A.dll 副本与我的可执行文件一起分发,但我想将 A & B 作为一个分发。

在 B.dll 中,A.dll 的“复制本地”属性设置为 false,而是明确包含在 Costura 的 FodyWeavers.xml 中。

有什么方法可以配置 Costura.Fody 和/或我的参考属性,以便 A.dll 不会被独立复制到 C.exe 的输出文件夹中,而 B.dll(带有对 A.dll 的嵌入式引用)被复制?

0 投票
1 回答
167 浏览

dll - 无法从 GAC 加载嵌入式依赖项

我创建了一个 HttpModule,将其添加到 GAC,然后在我的 web.config 中注册它。我使用Fody Costura嵌入依赖项。我的 bin 文件夹中的输出仅包含一个 dll、一个 .config 和一个 .pdb(因为所有依赖项都合并到该文件中。)我的问题是,每当我从 GAC 加载模块时,它都无法找到嵌入依赖项。我有以下观察:

  • 每当我的模块从 /bin 文件夹加载时,一切正常。我注册模块如下:

  • 当我从 GAC 加载我的模块时,我的模块无法加载依赖项。我收到以下消息:

    无法加载文件或程序集“Newtonsoft.Json,Version=10.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。该系统找不到指定的文件。

我的模块加载如下:

我在想我的模块不知道依赖关系在它自己内部。有什么方法可以告诉我的模块从合并的 dll 加载依赖项?或者任何可以指出我正确方向的人?我有点迷失在这里。谢谢!

0 投票
0 回答
446 浏览

c# - Fody weaving - 我也应该包含来自引用项目的 dll 吗?

我有一个“服务”csproj,它引用了 topshelf(使其成为 Windows 服务)、quartz(用于调度)以及对我的实际代码所在的“核心”csproj 的引用。我使用 costura 将所有 dll 合并为一个最终的 exe。

我的 FodyWeavers.xml 中有 topshelf、quartz 和 core 作为 IncludedAssemblies。最终的 exe 也嵌入了这些。用“dotpeek”检查。但是,当我执行 exe 时,它​​只是说“服务正在运行,请按 Control+C 退出。”。它没有达到我在核心项目中的实际代码。

在尝试了很多东西之后,我将核心项目引用的 dll 复制到了输出文件夹,然后服务开始运行——执行我的代码并进行数据库更新、写入日志等。

因此,我尝试在 fodyweavers.xml 中提及 nuget 包 dll 和项​​目引用 dll 的“核心”,但随后出现构建错误,提示“找不到程序集,即使是 copylocal=false”

有人可以提示我正确的方向吗?也许,我错过了一些明显的东西。

0 投票
2 回答
2800 浏览

c# - 在 Visual Studio 2017 中使用 Fody/Costura 和 Obfuscar

我想问一下是否可以使用Fody- Costura ,它将依赖项嵌入到可执行文件和Obfuscar中,一起进行混淆。

目前我正在苦苦挣扎,因为 Costura 的 Visual Studio 2017 中的 msbuild 目标在 obfuscar 之一之前执行(然后抱怨缺少依赖文件)。

由于 obfuscar 本身不提供目标,我正在使用MSBuild.Obfuscar

有没有办法将这两者结合起来,也许是通过指定目标的顺序?