gpt4 book ai didi

c# - 如何在二进制文件上将 AssemblyVersion 标记为 FileVersion

转载 作者:行者123 更新时间:2023-12-03 09:31:06 24 4
gpt4 key购买 nike

我正在使用 generating version number from current date/time 的 Roslyn 功能.

我可以看到自动生成的基于日期/时间的版本号被正确标记为 AssemblyVersion,我可以在运行时使用 API 读取它。

问题:如何获得标记为 file version 的相同自动生成的基于日期时间的版本号,这样我就可以在 Windows 资源管理器中右键单击程序集并查看“详细信息”选项卡下的“文件版本”

我看到当我明确标记版本号(比如 1.2.3.4)时它工作正常,但不是自动生成的

我没有使用 AssemblyInfo.cs 并希望在 .csproj 中设置属性

enter image description here

我正在使用 dotnet cli 使用以下 csproj 进行构建,例如:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<AssemblyVersion>1.0.*</AssemblyVersion>
<FileVersion>1.0.*</FileVersion>
<Deterministic>false</Deterministic>
<PackageId>Demo</PackageId>
<Company>My Company</Company>
<Copyright>Copyright © Xyzzy 2020</Copyright>
<Description>Description</Description>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<GenerateAssemblyFileVersionAttribute>true</GenerateAssemblyFileVersionAttribute>
<GenerateAssemblyTitleAttribute>true</GenerateAssemblyTitleAttribute>
<GenerateAssemblyConfigurationAttribute>true</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>true</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>true</GenerateAssemblyProductAttribute>
<GenerateAssemblyCopyrightAttribute>true</GenerateAssemblyCopyrightAttribute>
<GenerateAssemblyVersionAttribute>true</GenerateAssemblyVersionAttribute>
<GenerateAssemblyInformationalVersionAttribute>true</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>
</Project>

最佳答案

根据 Microsoft.NET.GenerateAssemblyInfo.targets 如果您不指定,则项目 FileVersion属性和设置 GenerateAssemblyFileVersionAttributefalse然后 FileVersion属性值将等于 AssemblyVersion属性(property)。

尝试像这样修改你的 csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>

<AssemblyVersion>1.0.*</AssemblyVersion>

<!-- Comment or delete this line. -->
<!-- <FileVersion>1.0.*</FileVersion> -->

<Deterministic>false</Deterministic>
<PackageId>Demo</PackageId>
<Company>My Company</Company>
<Copyright>Copyright © Xyzzy 2020</Copyright>
<Description>Description</Description>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>

<!-- Set this attribute to false. -->
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>

<GenerateAssemblyTitleAttribute>true</GenerateAssemblyTitleAttribute>
<GenerateAssemblyConfigurationAttribute>true</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>true</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>true</GenerateAssemblyProductAttribute>
<GenerateAssemblyCopyrightAttribute>true</GenerateAssemblyCopyrightAttribute>
<GenerateAssemblyVersionAttribute>true</GenerateAssemblyVersionAttribute>
<GenerateAssemblyInformationalVersionAttribute>true</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>
</Project>

这种方法对我有用。对 csproj 文件进行上述更改后,我能够看到 FileVersion在文件属性窗口中。

关于c# - 如何在二进制文件上将 AssemblyVersion 标记为 FileVersion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60448159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com