背景
在创建通用类库时,我镜像了 Microsoft .NET Framework 名称结构,将 System
替换为我自己的公司名称——即 Tek4.Net.NetworkWidget
。
对于特定于产品的程序集,我使用类似 Tek4.ProductName.IO.FileWriter
的东西。
输出.exe文件名太长!!! Company.Product.SuperApp.exe
Visual Studio 对输出文件使用完整的程序集名称;这对于 DLL 非常有用,但对于控制台应用程序来说太过分了——即 Tek4.Utils.ConsoleApp.exe
解决方案 1:(不推荐)
放弃主要可执行程序集的分层名称:
- 程序集名称:ConsoleApp
- EXE文件名:ConsoleApp.exe
此解决方案意味着您交付的 .exe 文件将仅包含一个简单的程序集名称,该名称无法很好地识别自身,并且更容易与其他程序集发生名称冲突。堆栈跟踪、.NET Reflector 等将仅显示 ConsoleApp
而不是完全限定的程序集名称。
解决方案 2:(我当前的选择)
编译后重命名输出文件,同时保留完整的内部程序集名称(使用构建后事件或手动重命名):
- 程序集名称: Tek4.Utilities.ConsoleApp
- EXE 文件名: Tek4.Utilities.ConsoleApp.exe --> ConsoleApp.exe
有了这个解决方案,名称冲突就不太可能发生,并且程序集名称出现的任何地方(即堆栈跟踪、系统事件日志等)都可以很容易地识别来源。
尽管如此,出于某种原因,我仍然讨厌笨拙的手动重命名。
您的解决方案和实践?
非常感谢。
最佳答案
我还会使用较短的可执行文件名称,尤其是在预期从命令行使用时。
话虽如此,如果您的应用程序同时具有 GUI 版本和命令行版本,我经常看到以下约定:
图形用户界面:SuperApp.exe CLI: SuperApp.Console.exe
前世今生
关于.net - 命名主程序集 (.exe) 以避免长文件名 : Company. Product.Application.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6116178/