在.NET框架中,您可以制作一个.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'.
我的问题是:是否有某种方法可以更改应用程序,使其不会require此配置文件存在,以便此信息的默认值在.DLL
但可以通过添加配置文件来覆盖吗?
注意:我还想确保它“正常工作”,无论安装在哪个平台上,前提是该平台具有正确的 .NET Core 版本。
背景
我试图获得运行一些有时有用但很少需要的实用程序的流畅用户体验。自从它似乎不可能使用相同的.DLL从客户端应用程序引用的 https://stackoverflow.com/questions/44830430/is-it-possible-to-make-the-same-dll-into-both-a-console-application-and-a-nuget作为控制台应用程序,下一个最好的事情就是拥有一个单个文件可以在没有任何依赖的情况下下载和运行。
例如,在 Java 中,您只需下载一个.jar
在任何支持的平台上创建文件并运行:
java <package>.jar <namespace>.SomeClass [args]
它会“正常工作”,无需任何额外的文件。如何使用 .NET Core 获得类似的用户体验?
简而言之,我想尝试避免“首先解压缩到目录”的额外步骤......