![]() |
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,而不是将程序集写入磁盘。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |