.EXE
文件,无需任何额外的配置文件即可从命令行运行(如果使用ILMerge,您可以将所有.DLL
引用放入1个.EXE
程序集中)。我尝试使用.NET Core来完成同样的事情,但迄今为止没有成功。即使是最简单的没有依赖关系的
Hello World
应用程序也需要一个名为<MyApp>.runtimeconfig.json
的文件才能使用dotnet.exe
运行。dotnet F:\temp\MyApp.dll
"
<MyApp>.runtimeconfig.json
的内容如下:
{
"runtimeOptions": {
"framework": {
"name": "Microsoft.NETCore.App",
"version": "1.1.1"
}
}
}
如果没有将此配置文件与 .DLL
文件放在同一文件夹中,我会收到以下错误提示:
A fatal error was encountered. The library 'hostpolicy.dll' required to
execute the application was not found in 'F:\temp'.
我的问题是:有没有办法更改应用程序,使其不需要存在这个配置文件,以便该信息的默认值被编译在{code}.DLL{/code}中,但可以通过添加配置文件来覆盖?
引用: 注意:我还想确保它“只要安装了正确版本的.NET Core,就可以在任何平台上“正常工作”。
背景: 我试图为运行一些有用但很少需要的实用程序获得流畅的用户体验。由于它似乎不可能使用从客户端应用程序引用的相同{code}.DLL{/code}作为控制台应用程序,所以最好的选择是拥有一个可以下载和运行而不需要任何依赖关系的单个文件。
例如,在Java中,您可以在任何受支持的平台上简单地下载一个{code}.jar{/code}文件并运行:
java <package>.jar <namespace>.SomeClass [args]
如果没有任何额外文件,它将“只需工作”。如何使用.NET Core获得类似的用户体验?
简而言之,我想尝试避免“首先解压缩到目录”的额外步骤...
.DLL
,因为只需维护一个二进制文件即可在任何平台上正常工作(前提是已安装了.NET Core版本),这样要维护的东西就会少得多。 - NightOwl888