如何在多个Visual Studio项目之间共享属性? (特别是C#项目)

时间:2010-09-11 12:41:33

标签: c# visual-studio properties projects-and-solutions assembly-attributes

手动保持多个Visual Studio项目的属性同步很烦人。那么,您如何在多个项目之间共享属性?

编辑:我指的是条件编译符号,警告和错误处理等属性,即您可以在Project-> Properties选项卡中配置的内容,或者通过编辑项目XML文件。

以前曾提出类似问题,请参阅:123。但是,根据我的理解,答案是C ++特有的。我正在寻找C#项目的答案。不过,如果你保持分离清晰,请不要犹豫,回答其他类型的项目(Visual Basic等),因为除了我以外的其他人可能会感兴趣。

This blog post提出了解决问题的方法,但我更喜欢更简单的方法。

此外,您至少可以通过以下方式解决部分问题(请注意,虽然我测试了它,但我没有彻底测试它):

使用您要共享的程序集属性创建AssemblyInfo.cs文件。链接到各个项目中的此现有项目。使用原始(本地)AssemblyInfo.cs并将项目特定的程序集属性放在那里。不幸的是,覆盖属性似乎不起作用,现在通过GUI管理属性是有限的。

2 个答案:

答案 0 :(得分:5)

对于那种事情,我更喜欢有一个单独的类库项目,其中一个(或多个)静态类存储(静态)属性。然后从需要同步这些属性的每个项目添加对该项目的引用,并且所有这些项目将具有相同的值,您只需在一个地方更改它。

例如,假设我在网络和桌面形式中拥有相同的应用程序。像连接字符串这样的东西必须对两者都一样。所以我将创建三个项目:
MyProject.Web(Web应用程序)
MyProject.Desktop(Windows窗体应用程序)
MyProject.Common(类库)
然后我在Common中添加一个名为Properties的新静态类,其中包含一个名为ConnectionString的静态属性,它返回连接字符串 然后我在Web和桌面中添加对Common的引用,当我想从其中任何一个访问连接字符串时,我使用Common.Properties.ConnectionString。

答案 1 :(得分:1)

我们非常大量地使用.vsprops文件来在我们的本机项目之间定义共享宏。

有人提出完全相同的问题,你提出了向解决方案中添加“空白”可视化C ++项目的想法,以便可以导入vsprops文件,并且该属性通常对解决方案的其余部分可见。如果它听起来不太严重,我可以找出它是如何成功的。