【问题标题】:The AssemblyTitle never changes once set, I want it to be changed per configurationAssemblyTitle 一旦设置就永远不会改变,我希望根据配置对其进行更改
【发布时间】:2014-01-27 12:05:07
【问题描述】:

我想根据产品名称更改下面屏幕截图中显示的文本。我知道,文本取自 Assembly.Title 属性,该属性是只读属性,因此无法在运行时更改。那么如何在编译时更改它呢? 我们将应用程序出售给多个客户,并且应用程序的名称应根据每个客户更改。我们为每个客户提供配置。所以在构建时,应根据配置选择程序集标题。

任何建议如何解决这个问题?

更新:

我尝试了 cmets 中给出的一些建议,发现如下:

使用项目属性中的程序集信息弹出窗口设置文本或直接在 AssemblyInfo.cs 文件中更改文本后,它会正确显示在任务栏中。

如果我再次更改它,更改的文本不会显示在任务栏中,即。它始终显示在FIRST time设置的文本。

我尝试删除文件,甚至重新启动系统,但没有帮助。

然后我重命名了文件(即 exe 文件),然后它正确显示了更改后的文本

如果我将它重命名为原始名称,它会显示第一个设置的文本。

可能是什么原因?

【问题讨论】:

标签: c# wpf .net-assembly msbuild-task


【解决方案1】:

在 AssemblyInfo.cs(在 VisualStudio 项目的属性下)中,您会发现在如下属性中指定的程序集标题:

[assembly: AssemblyTitle("MyAssembly")]

你应该可以用编译器常量来包装它:

#if SOME_MODE
    [assembly: AssemblyTitle("SomeName")]
#else
    [assembly: AssemblyTitle("ADifferentName")]
#endif

【讨论】:

  • 可能,OP 希望将代码与构建类型分开,以便可以仅通过脚本控制该过程。这是开启构建配置的万无一失的方法!
  • @Gusdor 除非以不同方式处理 AssemblyInfo.cs,否则编译器指令应处理此问题。 SOME_MODE 常量可以与项目属性视图中的所需配置相关联。
  • @ChaseMedallion 我试过但没有改变,请检查我更新的问题。
  • @RajeshNaik:可能是 Windows UI 只是缓存了程序集标题以显示在跳转列表中。但是,由于您将应用程序的不同版本发送给不同的客户,这应该不是问题,对吧?要确认,请尝试将不同标题的版本发送到另一台机器,并检查那里是否显示正确的标题。
猜你喜欢
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 2019-05-13
相关资源
最近更新 更多