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

Visual Studio能否构建简单名称与文件名不同的.NET程序集?

关于程序集简单名称与文件名不一致的构建阶段配置方式

好问题!除了事后重命名程序集文件这种情况,确实存在完全合法的、在构建阶段就让程序集简单名称(即System.Reflection.AssemblyName.Name)与输出文件名不一致的方式,这些都是官方支持的配置手段,我来给你梳理几种常见场景:

1. 通过项目配置文件(csproj)直接指定

不管是.NET Framework、.NET Core还是.NET 5+,你都可以在项目的.csproj文件中分别配置程序集元数据名称和输出文件名,让二者完全独立:

<PropertyGroup>
  <!-- 这是元数据中的程序集简单名称,对应AssemblyName.Name -->
  <AssemblyName>MyCustomAssemblyMetadataName</AssemblyName>
  <!-- 这是编译后生成的文件的名称(不含扩展名) -->
  <OutputFileName>MyDifferentOutputFileName</OutputFileName>
  <TargetFramework>net6.0</TargetFramework>
  <OutputType>Exe</OutputType>
</PropertyGroup>

编译后,你会得到MyDifferentOutputFileName.exe,但通过反射获取Assembly.GetExecutingAssembly().GetName().Name时,得到的却是MyCustomAssemblyMetadataName。

2. 使用AssemblyInfo文件(传统.NET Framework场景)

如果你还在使用传统的AssemblyInfo.cs文件来配置程序集属性,可以直接在其中指定程序集名称,同时在项目属性中单独设置输出文件名:

// AssemblyInfo.cs
[assembly: AssemblyName("MyAssemblyMetadataName")]

之后在项目的“生成”设置里,修改“输出文件名”为你想要的任意名称,编译后就能得到文件名与元数据名称不一致的程序集。

3. 直接使用命令行编译工具(csc.exe)

如果你手动使用C#编译器csc.exe编译代码,可以通过参数分别指定输出文件名和程序集元数据名称:

csc /out:MyOutputFile.dll /assemblyname:MyAssemblyMetadataName Program.cs

这条命令会生成名为MyOutputFile.dll的程序集文件,但程序集元数据中的简单名称是MyAssemblyMetadataName,完全符合你说的“构建阶段就不一致”的场景。

这些场景都是文档中提到的“非通常情况”的合法案例,并非只有事后重命名这一种例外。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:50:56