我做了一个程序,编译到arbitrage2目录下。
当一切正常时,我将.exe文件复制到arbitrage4目录。
在使用.net 7之前,它工作得很好。
但是,我感到惊讶的是,在arbitrary 4目录上运行的代码一定是一个过时的代码。
我最后直接将程序编译到Arbitrary 4目录中,它工作得很好。
我想知道我的代码是不是真的在.exe文件,但在其他一些文件?
我想知道在.net 7之后.exe文件是否只是一个调用其他东西的幌子。如果是这样,那就可以解释了。
我做了一个程序,编译到arbitrage2目录下。
当一切正常时,我将.exe文件复制到arbitrage4目录。
在使用.net 7之前,它工作得很好。
但是,我感到惊讶的是,在arbitrary 4目录上运行的代码一定是一个过时的代码。
我最后直接将程序编译到Arbitrary 4目录中,它工作得很好。
我想知道我的代码是不是真的在.exe文件,但在其他一些文件?
我想知道在.net 7之后.exe文件是否只是一个调用其他东西的幌子。如果是这样,那就可以解释了。
2条答案
按热度按时间gfttwv5a1#
我建议看看Single-file deployment,它会把你所有的引用打包到一个EXE中,这样无论你把你的EXE放在哪里,它都会有它所需要的一切。
bgtovc5b2#
正如这里链接的答案所述,.NET6.0+应用程序的exe只是一个存根加载器(它基本上是
dotnet.exe
的补丁副本),并且本身除了加载运行时之外什么也不做。代码驻留在平台无关的applicationname.dll
文件中。要运行应用程序,需要exe和dll,以及在那里生成的任何.json文件(它们用于查找正确的引用库)。当然,输出文件夹中的任何其他dll也需要成功运行您的应用程序。因此,一般的经验法则是:如果您希望输出文件夹在其他地方(在不同的目录或不同的PC上)运行,请复制输出文件夹中的所有内容。有两个例外:.pdb文件仅用于调试。因此您不需要分发这些文件。与.dll文件同名的.xml文件用于intellisense,因此它们仅对开发人员有帮助。它们应该与库一起分发,而不是与完整的应用程序一起分发。