2017-04-20 122 views
2

發佈時,我有一個網絡核心consoleapp項目,具體如下(VS 2017年的風格):安裝exe文件版本的dotnet

<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發佈發佈-r win10-x64,它會和dll文件一起生成一個exe文件。我的問題是,exe文件有一些奇怪的FileVersion和ProductVersion字段(在我的情況FileVersion = 1.0.1.4500和ProductVersion 1.0.1.cee57 ...(一些GUID))。此外,其餘的文件細節(名稱,版權)與dotnet相關,而不是我自己的項目。

有什麼辦法可以在發佈時控制exe的細節?

回答

2

不,你的項目的主要構建輸出仍然是一個.dll文件,.exe文件(或在Linux,Mac可執行文件)文件是複製和重命名dotnet.exe(或即將到來的2.0版本的情況下,apphost.exe使用DLL名稱運行嵌入式)。

該exe文件只是一個助手啓動運行時,然後加載您的dll。但是,您可以嘗試使用二進制編輯工具,如editbin.exe(VS C++ Tools)在發佈後修改文件。

+0

現在我讀了它,這很有道理。謝謝! – mslliviu

+1

fyi的exe文件只是從這個NuGet包中提取的:https://www.nuget.org/packages/runtime.win7-x64.Microsoft.NETCore.DotNetHost/1.0.1 這允許構建獨立的.net核心從Linux或Mac機器上運行在Windows上的應用程序 –