|
|
1
42
将第三方程序集嵌入为资源后,添加代码以订阅
哪里
最后,正如一些人已经提到的, ILMerge 可能是另一个需要考虑的选择,尽管有点复杂。 |
|
|
2
19
最后,我几乎完全按照拉博夫的建议做了这件事(和DGVID的建议类似),除了一些细微的变化和一些遗漏得到了修正。我之所以选择这个方法,是因为它最接近我最初所寻找的,并且不需要使用任何第三方可执行文件等。很好用! 这就是我的代码最终的样子: 编辑:我决定将此函数移动到另一个程序集,以便在多个文件中重用它(我只是传入assembly.getExecutingAssembly())。 这是一个更新版本,允许您使用嵌入的DLL传入程序集。 EmbeddedResourcePrefix是嵌入资源的字符串路径,它通常是程序集的名称,后跟包含该资源的任何文件夹结构(例如,“MyMapny.MyProduct.MyAssembly.Resources”,如果该dll位于项目中名为“资源”的文件夹中)。它还假定dll具有.dll.resource扩展名。
|
|
|
3
13
有一个叫做ilmerge的工具可以做到这一点: http://research.microsoft.com/~mbarnett/ILMerge.aspx 然后您可以创建类似于以下内容的构建事件。 set path=“c:\program files\microsoft\ilmerge” ilmerge/out:$(projectdir)\deploy\levelditor.exe$(projectdir)\bin\release\release.exe$(projectdir)\bin\release\interactlib.dll$(projectdir)\bin\release\spritelib.dll$(projectdir)\bin\release\levellibrary.dll |
|
|
4
9
我已经成功地完成了您所描述的工作,但是由于第三方DLL也是.NET程序集,所以我从未将其写入磁盘,而是从内存中加载它。 我将嵌入式资源程序集作为字节数组,如下所示:
然后我用assembly.load()加载数据。 最后,我向appdomain.currentdomain.assemblyresolve添加一个处理程序,以便在类型加载器查找时返回已加载的程序集。 见 .NET Fusion Workshop 更多细节。 |
|
|
5
8
您可以非常容易地使用 Netz ,一个.NET可执行文件压缩程序和打包程序。 |
|
|
6
2
您可以尝试执行assembly.load(byte[]rawasassembly),从嵌入资源创建rawasassembly,而不是将程序集写入磁盘。 |
|
|
Guilherme Albertini · DLL中的类 7 年前 |
|
|
Naomi · C#dll资源文件更改语言 8 年前 |
|
|
AidanH · C#DLL语言翻译实现[关闭] 8 年前 |
|
|
subham · DLL函数调用不工作 8 年前 |
|
|
PixelThis · 为什么我的DLL要求我的程序有一个特定的名称? 8 年前 |
|
|
nemo · DLL的“好”调用约定是什么? 8 年前 |