我有一个net core consoleapp项目,如下(VS 2017风格):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<Version>2.0.0</Version>
<AssemblyVersion>3.0.0.0</AssemblyVersion>
<FileVersion>4.0.0.0</FileVersion>
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
</PropertyGroup>
</Project>
我可以毫无问题地构建项目,我可以使用dotnet publish -r win10-x64发布它,它将与dll文件一起生成exe文件。我的问题是exe文件有一些奇怪的FileVersion和ProductVersion字段(在我的例子中FileVersion = 1.0.1.4500和ProductVersion 1.0.1.cee57 ...(一些guid))。其余的文件详细信息(名称,版权)与dotnet而不是我自己的项目有关。
发布时有什么方法可以控制exe细节吗?
答案 0 :(得分:4)
不,您项目的主要构建输出仍然是.dll
文件,.exe(或linux,mac可执行文件)文件是复制并重命名的dotnet.exe
(或者即将发布的2.0)版本,apphost.exe
,其中dll名称可以嵌入运行。
exe文件只是一个启动运行时然后加载你的dll的帮助器。但是,您可以尝试使用二进制编辑工具(如editbin.exe
(VS C ++工具))在发布后修改文件。
答案 1 :(得分:0)
Dotnet core 3.0增加了在发布过程中对shim exe进行版本控制的功能,就像OP所期望的那样。它应该立即可用。但是,如果在基于Nanoserver的docker环境上运行构建,则该功能将不起作用。
警告NETSDK1074:应用程序主机可执行文件将不会 自定义,因为添加资源需要构建 在Windows(不包括Nano服务器)上执行