Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Emit-如何在自包含的exe文件中包含库_C#_Reflection.emit - Fatal编程技术网

C# Emit-如何在自包含的exe文件中包含库

C# Emit-如何在自包含的exe文件中包含库,c#,reflection.emit,C#,Reflection.emit,我发现以下代码位于(稍微重写): 另外,我在一个名为TestClass的单独项目中有以下类: namespace TestClasses { public class Class1 { public static void Test(String t) { Console.WriteLine("Test: " + t); } } } 命名空间测试类 { 公共班级1 { 公共静态无效测试(字符串t) {

我发现以下代码位于(稍微重写):

另外,我在一个名为TestClass的单独项目中有以下类:

namespace TestClasses { public class Class1 { public static void Test(String t) { Console.WriteLine("Test: " + t); } } } 命名空间测试类 { 公共班级1 { 公共静态无效测试(字符串t) { 控制台写入线(“测试:+t”); } } } 现在,当我编译这个文件时,我(显然)得到了两个文件“TestEXEApp.exe”和“TestClasses.dll”。如果我运行它,我会得到一个新文件“Hello.exe”,如果我运行这个新文件,它会打印“Test:Hello,World!”。到目前为止,一切顺利。现在,问题是,这个新文件显然依赖于TestClasses.dll。因此,如果我将其发送到另一个目录,或者出于某种原因将其移动,它将无法再执行


Reflection.Emit是否有某种方式将TestClasses.Class1代码以某种方式包含到Hello.exe可执行文件中,从而使其成为100%自包含的(显然,除了对.NET framework的依赖之外)?或者,如果无法做到这一点,我如何让程序输出TestClasses.dll的副本,以便我始终将dll文件写入Hello.exe所在的目录中?

也许您可以使用它?是的,看起来这是一个不错的选择。但是,我仍然需要dll文件。显然,我有dll文件,因为我能够运行TestEXEApp.exe,但我希望(正如我在上一个问题中提到的)将其与Hello.exe一起输出,Hello.exe通常与我的可执行文件不在同一文件夹中。所以基本上,它归结为:我怎样才能知道需要什么dll文件,以及这些dll文件在哪里(这样TestEXEApp.exe就可以将它们复制到输出目录)?恐怕我帮不了你,对不起。呃。。。你想干什么?这听起来像是XY问题。是的,也许是。我试图做的是减少我遇到的逻辑问题:我有这个代码,它会发出一些新的代码(这是一个机器学习研究项目),我可能需要稍后使用发出的代码。然而,我的源代码改变了很多,所以有问题的dll也改变了很多。因此,我需要存储所有二进制文件,包括DLL,以及发出的代码。否则,我以后将无法运行它。所以我需要复制dll,所以我只是在寻找一种方法,避免每次系统运行时都要显式复制它们。 namespace TestClasses { public class Class1 { public static void Test(String t) { Console.WriteLine("Test: " + t); } } }