【问题标题】:Publishing app for win10-x64 runtime, dll gets VersionInfo.cs file information and executable does not, why?为win10-x64运行时发布应用程序,dll获取VersionInfo.cs文件信息而可执行文件没有,为什么?
【发布时间】:2020-11-25 10:07:50
【问题描述】:

我正在发布这样的 dotnet 核心应用程序:

call dotnet publish MyApp.csproj -c Release -o "%scriptDir%\..\dist\Publish\MyApp" -r win10-x64

我的“.csproj”文件包括这个(VersionInfo.cs 文件):

  <ItemGroup>
    <Compile Include="..\VersionInfo.cs" Exclude="bin\**;obj\**;**\*.xproj;packages\**" />
  </ItemGroup>

它包含这样的信息:

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyCompany("My Company")]
[assembly: AssemblyCopyright("Copyright © My Company 2018")]
[assembly: AssemblyTrademark("My Company")]

在输出中,“MyApp.dll”获取所有这些信息:版本、公司名称等在文件属性中设置。 但是生成的运行时可执行文件“MyApp.exe”没有任何版本信息:(.

  • 为什么运行时不包含与 DLL 相同的信息?
  • 如何将“VersionFile.cs”文件中的信息添加到指定的运行时可执行文件中?

【问题讨论】:

标签: c# .net .net-core


【解决方案1】:

有更简单的方法可以在项目文件中包含程序集信息。

<PropertyGroup>
    <AssemblyVersion>1.0</AssemblyVersion>
    <FileVersion>1.0.0.0</FileVersion>
    <Company>My Company</Company>
    <Copyright>Copyright © My Company 2018</Copyright>
    <Trademark>My Company</Trademark>
</PropertyGroup>

作为示例,您可以查看 Newtonsoft.Json project file

Here 你可以找到一些关于 .NET Core exe 文件如何工作的讨论。

总体:

  • .NET Core 不支持exe文件,只生成dll
  • 如果您在发布期间指定运行时标识符,则将生成本机主机(Windows 的 exe)以引导特定操作系统的托管 dll

【讨论】:

  • 我完全同意这个答案。不要将 VersionInfo.cs 与 dotnet 核心一起使用
  • 我在所有项目中使用此 VersionFile 的主要内容,并且有一个“VersionUpdater”应用程序可以更新 VersionInfo.cs(版本和其他详细信息)并且它包含在所有项目中。我想我可以使用与项目“目标”相同的方法,是吗?也许有一些例子?而且也不确定它是否有帮助(因为 DLL 有信息,但“MyApp.exe”没有信息......)。
  • 已检查。包括“PropertyGroup”参数而不是“VersionInfo.cs”文件没有帮助。 “MyApp.exe”属性仍然没有填充,只有 DLL,所以使用一个或另一个没有区别。没有答案。
  • @Drasius "MyApp.exe" 不是托管应用程序,它是用于启动托管 DLL 的本机包装器。这就是 .NET Core 独立应用程序的工作方式
  • @MikeMazmanyan 所以没有办法为可执行文件添加相同的版本信息?
【解决方案2】:

我能够通过将 .csproj 中的 GenerateAssemblyInfo 标记设置为 true 来解决此问题。

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <OutputType>WinExe</OutputType>
    <GenerateAssemblyInfo>true</GenerateAssemblyInfo> <!-- this was false -->
...
  </PropertyGroup>

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 2013-06-12
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多