VS2022无法在DLL中设置文件或程序集版本

问题描述 投票:0回答:1

在我的这个上一个问题中,我以为我已经解决了在 VS2022 C# 项目中设置版本信息的问题。 但我似乎又遇到了这个问题,无法弄清楚。 当时和现在的主要区别在于,在上一个问题中我正在研究一个应用程序,而今天我正在研究一个 DLL。

我在 VS2022 项目中明确设置了这些设置

enter image description here

enter image description here

这反映在 csproj 文件的详细信息中:

 <PropertyGroup>
   <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
   <Title>blah blah</Title>
   <PackageReadmeFile>readme.md</PackageReadmeFile>
   <Version>1.0.2</Version>
   <FileVersion>1.0.2</FileVersion>
   <AssemblyVersion>1.0.2</AssemblyVersion>
   <Authors>blah blah</Authors>
   <Description>blah blah blah, blah blah</Description>
   <Copyright>Copyright blah blah 2024</Copyright>
 </PropertyGroup>

但是构建后,当我通过文件资源管理器查看 DLL 属性时,我看到了以下内容:

enter image description here

为了进行比较,我尝试使用 这个 powershell 命令 来检查 DLL,这证实了资源管理器的结果:

enter image description here

另外我还在项目中设置了版权信息,DLL的属性中也是空白的。

那么这是怎么回事? 为什么我无法设置文件或程序集版本?

这对我来说很重要的原因是,我在构建期间生成了一个 NuGet 包,并且该包似乎认为 DLL 是 1.02,但 DLL 不是 1.02,并且当 NuGet 包 DLL 加载到另一个应用程序中时,应用程序失败,因为它找不到预期的 DLL 版本。

FWIW 该 DLL 项目已从 VS2017 升级到 VS2022 项目。 所以自动升级可能遗漏了一些东西。 然而,自项目开始以来,今天是我在将 DLL 的版本属性保留为默认值后实际尝试设置它们的第一天。

windows visual-studio file properties
1个回答
0
投票

在@DennisLi 关于 AssemblyInfo.cs 的问题提示后,我去查看了该问题以及项目中的其他内容。

首先,这个项目没有AssemblyInfo.cs文件。 然而,当查看 csproj 文件的详细信息时,我看到了这一点:

  <PropertyGroup>
    <TargetFramework>net8.0-windows8.0</TargetFramework>
    <OutputType>Library</OutputType>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <UseWPF>true</UseWPF>
    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
  </PropertyGroup>

关键点是GenerateAssemblyInfo 元素。 这显然是为了控制旧式 AssemblyInfo.cs 文件和新式 SDK 项目文件中程序集等信息的生成。

如果为 false,则该信息来自 AssemblyInfo.cs 文件。 但如前所述,该文件不在当前项目中。 但是,在我更新到 VS2022 项目之前,该文件确实存在于原始 VS2017 项目中。

作为测试,我像这样注释掉了该元素:

  <PropertyGroup>
    <TargetFramework>net8.0-windows8.0</TargetFramework>
    <OutputType>Library</OutputType>
    <!--<GenerateAssemblyInfo>false</GenerateAssemblyInfo>-->
    <UseWPF>true</UseWPF>
    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
  </PropertyGroup>

这导致预期的信息出现在文件属性中:

enter image description here

看起来在从旧项目转换为新项目的过程中出了问题,我被留在了不确定的位置,版本信息预计位于 AssemblyInfo.cs 文件中,但转换已删除该文件。

© www.soinside.com 2019 - 2024. All rights reserved.