You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS编译.NET 8项目FileVersion显示0.0.0.0,csproj配置正常

问题原因与解决方法

可能的原因

  1. 版本配置作用域错误:升级助手迁移后,AssemblyVersion和FileVersion可能被放在了带条件限制的PropertyGroup中(比如仅针对Debug配置或旧框架),导致编译当前使用的配置时无法读取到版本值。
  2. 编译缓存干扰:项目的bin/obj文件夹中残留了旧的编译文件,导致新版本配置未生效。
  3. 重复配置覆盖:.csproj文件中存在多处AssemblyVersion/FileVersion配置,后续的默认配置(比如0.0.0.0)覆盖了自定义设置。

解决方法

1. 检查并修正.csproj中的版本配置

打开项目的.csproj文件,确保AssemblyVersion和FileVersion处于无条件限制的PropertyGroup中,或至少包含你当前编译使用的Configuration|Platform组合。示例如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <!-- 确保版本属性在通用PropertyGroup中 -->
    <AssemblyVersion>1.0.0.3</AssemblyVersion>
    <FileVersion>1.0.0.4</FileVersion>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>

如果版本属性被放在带Condition的PropertyGroup中(比如仅针对Debug配置),切换到Release编译时就会读取不到版本值,需要将其移到通用属性组,或为所有需要的配置分别添加版本设置。

2. 清理并重新编译

  • 右键解决方案,选择清理解决方案。
  • 手动删除项目目录下的bin和obj文件夹。
  • 重新编译项目后,再检查文件版本和程序标题。

3. 排查重复配置

搜索整个.csproj文件,确认是否存在多份AssemblyVersion或FileVersion配置。如果有,保留需要的版本值,删除其他冲突配置。

4. 验证GenerateAssemblyInfo设置

确认GenerateAssemblyInfo确实设置为false,避免SDK自动生成的AssemblyInfo.cs覆盖自定义版本配置(可再次检查.csproj文件确认)。

内容的提问来源于stack exchange,提问作者Plaje

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:02:47