gpt4 book ai didi

.NET混合多文件程序集

转载 作者:行者123 更新时间:2023-12-02 09:00:29 29 4
gpt4 key购买 nike

我需要创建一个由 2 个模块组成的 .NET 程序集:1 个带有 native 代码的内部模块(在 DLL 中)和 1 个外部模块(在 .netmodule 文件中)。

这很容易做到,除了 native 部分。

C# 的编译器可以做到这一点(这就是我想要的,但是使用 native 代码):

csc /t:library /out:foobar.dll foo.cs /out:bar.netmodule bar.cs
-foobar.dll (contains assembly manifest and foo's IL)
-internal module foobar.dll (contains foo's IL)
-external module bar.netmodule (contains bar's IL)

C++ 编译器/链接器会将所有内容放入 1 个内部模块中。

cl /clr /LD foo.cpp /link bar.netmodule /LTCG
OR link /out:foobar.dll foo.netmodule bar.netmodule
-foo(bar).dll (contains IL for both foo and bar, as well as assembly manifest)

汇编链接器仅执行外部模块:

al /out:foobar.dll foo.netmodule bar.netmodule
-foobar.dll (only contains manifest)
-external module foo.netmodule (contains foo's IL)
-external module bar.netmodule (contains bar's IL)

我也尝试过手动调整 IL,但 ILDASM 和 ILASM 似乎无法往返 native 代码:

ildasm foobar.dll /out=foobar.il
ilasm /dll foobar.il
-lots of errors

为了澄清,我想要的是:

-foobar.dll (contains assembly manifest and foo's IL AND NATIVE CODE)
-internal module foobar.dll (contains foo's IL AND NATIVE CODE)
-external module bar.netmodule (contains bar's IL)

最佳答案

亨克已经走上了正确的道路。您可以创建一个 .netmodule 作为输入,仅用于创建程序集。程序集是 .NET 环境中最小的执行单元。程序集可以由一个或多个物理文件组成。它可以包含多种资源:资源文件、网络模块和 native DLL。网络模块不能单独部署,必须链接到程序集中。

现在我们已经解决了这个问题,让我们尝试专注于您所追求的目标。您是否正在尝试创建多文件程序集?这是可能的。 Here's a rather old but still useful post在多模块组件上。或者您是否正在尝试创建可用作库的网络模块?因为这是不可能的,因为网络模块不包含程序集。

如果这不能回答您的问题,您能否更详细地解释一下您想要的最终结果是什么和/或您期望如何使用它?

关于.NET混合多文件程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622042/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com