Visual Studio 2026 C# 專案 軟體版號修改

Visual Studio 2026 C# 專案 軟體版號修改

Visual Studio 2026 C# 專案 軟體版號修改


資料來源: https://gemini.google.com/share/596db2a51137


使用FileVersion來記錄開發版本(手動修改)+Version記錄編譯時間(自動調整),藉此實現明確簡易檢視『該版本是在何時編譯』的解決方案


核心設定區域

  <!-- 專案編譯版本資訊設定 start -->
  <PropertyGroup Label="Avalonia">
    <AvaloniaXamlIlDebuggerLaunch>False</AvaloniaXamlIlDebuggerLaunch>
    <AvaloniaXamlVerboseExceptions>False</AvaloniaXamlVerboseExceptions>
    <FileVersion>2.0.0.0</FileVersion>
  </PropertyGroup>
  <PropertyGroup>
	  <Builyyyy>$([System.DateTime]::Now.ToString("yyyy"))</Builyyyy>
	  <BuilMMdd>$([System.DateTime]::Now.ToString("MMdd"))</BuilMMdd>
	  <BuildHHmm>$([System.DateTime]::Now.ToString("HHmm"))</BuildHHmm>
	  <Buildss>$([System.DateTime]::Now.ToString("ss"))</Buildss>
	  <BaseVer>$(Builyyyy).$(BuilMMdd).$(BuildHHmm).$(Buildss)</BaseVer>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
	  <Version>$(BaseVer)</Version>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
	  <Version>$(BaseVer)-debug</Version>
  </PropertyGroup>
  <!-- 專案編譯版本資訊設定 end -->


完整專案檔

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <Nullable>enable</Nullable>
    <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
    <Platforms>AnyCPU;x64;x86</Platforms>
    <ApplicationIcon>sys.ico</ApplicationIcon>
    <AssemblyName>VPOS</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
    <Deterministic>True</Deterministic>
    <Optimize>False</Optimize>
    <DebugType>full</DebugType>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
    <Deterministic>True</Deterministic>
    <Optimize>False</Optimize>
    <DebugType>full</DebugType>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
    <Deterministic>True</Deterministic>
    <Optimize>False</Optimize>
    <DebugType>full</DebugType>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
    <Deterministic>True</Deterministic>
    <Optimize>True</Optimize>
    <DebugType>full</DebugType>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
    <Deterministic>True</Deterministic>
    <Optimize>True</Optimize>
    <DebugType>full</DebugType>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
    <Deterministic>True</Deterministic>
    <Optimize>True</Optimize>
    <DebugType>full</DebugType>
  </PropertyGroup>
  <!-- 專案編譯版本資訊設定 start -->
  <PropertyGroup Label="Avalonia">
    <AvaloniaXamlIlDebuggerLaunch>False</AvaloniaXamlIlDebuggerLaunch>
    <AvaloniaXamlVerboseExceptions>False</AvaloniaXamlVerboseExceptions>
    <FileVersion>2.0.0.0</FileVersion>
  </PropertyGroup>
  <PropertyGroup>
	  <Builyyyy>$([System.DateTime]::Now.ToString("yyyy"))</Builyyyy>
	  <BuilMMdd>$([System.DateTime]::Now.ToString("MMdd"))</BuilMMdd>
	  <BuildHHmm>$([System.DateTime]::Now.ToString("HHmm"))</BuildHHmm>
	  <Buildss>$([System.DateTime]::Now.ToString("ss"))</Buildss>
	  <BaseVer>$(Builyyyy).$(BuilMMdd).$(BuildHHmm).$(Buildss)</BaseVer>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
	  <Version>$(BaseVer)</Version>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
	  <Version>$(BaseVer)-debug</Version>
  </PropertyGroup>
  <!-- 專案編譯版本資訊設定 end -->

  <ItemGroup>
    <AvaloniaResource Include="Assets\**" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="sys.ico" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="AnimatedImage.Avalonia" Version="2.1.2" />
    <PackageReference Include="Avalonia" Version="11.3.9" />
    <PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.9" />
    <PackageReference Include="Avalonia.Desktop" Version="11.3.9" />
    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.9" />
    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.9" />
    <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.3.9" />
    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
    <PackageReference Include="Costura.Fody" Version="6.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Dapper" Version="2.1.66" />
    <PackageReference Include="Jint" Version="3.0.1" />
    <PackageReference Include="Microsoft.NET.ILLink.Tasks" Version="10.0.1" />
    <PackageReference Include="NAudio" Version="2.2.1" />
    <PackageReference Include="SkiaSharp" Version="3.119.1" />
    <PackageReference Include="SkiaSharp.NativeAssets.Win32" Version="3.119.1" />
    <PackageReference Include="System.Data.SQLite.Core" Version="1.0.119" />
    <PackageReference Include="System.Drawing.Common" Version="10.0.1" />
    <PackageReference Include="System.IO.Ports" Version="10.0.1" />
    <PackageReference Include="System.Management" Version="10.0.1" />
    <PackageReference Include="System.Text.Encoding.CodePages" Version="10.0.1" />
    <PackageReference Include="ZXing.Net" Version="0.16.11" />
    <PackageReference Include="ZXing.Net.Bindings.Windows.Compatibility" Version="0.16.14" />
  </ItemGroup>
  <ItemGroup>
    <None Update="cleanup.bat">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="SQLite3.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <!-- 新增一個全域的後建目標 -->
  <Target Name="CleanupAfterBuild" AfterTargets="Build;Rebuild;Publish">
    <Exec Command="cmd /c &quot;$(TargetDir)cleanup.bat&quot;" />
    <Exec Command="cmd /c del &quot;$(TargetDir)cleanup.bat&quot;" />
    <Exec Command="cmd /c del &quot;$(TargetDir)log.txt&quot;" />
    <Exec Command="cmd /c del &quot;$(TargetDir)VPOS.pdb&quot;" />
  </Target>
  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="echo Release@@x86&#xD;&#xA;if &quot;$(ConfigurationName)&quot; == &quot;Release&quot; (if &quot;$(PlatformName)&quot; == &quot;x86&quot; (&quot;$(ProjectDir)_Obfuscar\Obfuscar.Console.exe&quot; &quot;$(ProjectDir)_Obfuscar\obfuscar_Release_x86.xml&quot;&#xD;&#xA;xcopy /e /v &quot;$(ProjectDir)bin\x86\Release\net10.0\\Out\&quot; &quot;$(ProjectDir)bin\x86\Release\net10.0\&quot; /Y))" />
  </Target>
</Project>

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *