如何在不同的解决方案之间共享相同的 Visual Studio 项目?不同的 app.config 和 settings.settings

Posted

技术标签:

【中文标题】如何在不同的解决方案之间共享相同的 Visual Studio 项目?不同的 app.config 和 settings.settings【英文标题】:How to share same Visual Studio project between different solutions? Different app.config and setttings.settings 【发布时间】:2011-09-07 01:03:45 【问题描述】:

标题并没有完全描述实际问题,因为我试图将足够简洁的描述放入单行中。

我有一个 C# 项目,我想在两个不同的解决方案 (.sln) 之间共享。该项目是一个具有 Main 方法的应用程序。它需要使用 settings.settings 和 app.config。这两个解决方案中的每一个都需要引用同一个 C# 项目,但对于每个解决方案,app.config 和 settings.settings 都需要特定于它们的解决方案。因此,如果项目 C 在解决方案 A 和 B 之间共享,则 A 包含 C,其中 C 具有特定于 A 的 app.config,B 包含相同的完全相同的 C 项目,但 C 具有特定于 C 的 app.config。有没有办法做这个?我试图避免将同一个项目(即 C)复制到两个不同的位置,因为如果我在一个解决方案中更新该项目,那么我必须在另一个解决方案中进行相同的更改。

谢谢

【问题讨论】:

【参考方案1】:

也许您可以使用ConfigurationManager 中的Open...() 方法之一来实现此目的。否则,以下 hack 可能会起作用(除非您需要复制整个 App.config 文件):在 A 中创建最小控制台应用程序 D1,在 B 中创建 D2,并从此处调用 C 的 main() 方法,并使用 D1 和 D2作为启动项目。现在,将使用 D1 和 D2 的 App.config 代替 C 的 App.config。

【讨论】:

谢谢,这是一个值得考虑的好主意,我也想出了另一个我会发布的。【参考方案2】:

我要共享的项目实际上是在两个不同的源代码管理位置之间共享的。我想在 SVN 服务器解决方案和 TFS 服务器解决方案之间共享同一个项目(即 C)。我想出的一种可行的解决方案(也适用于多个共享项目)是从位于共享项目目录上方的目录/分支中链接 app.config。因此,您可以拥有 2 个不同的工作区,而不是使用位于项目 C 目录中的 app.config,并且在项目 C 的目录上方有一个名为 ApplicationSettings 的文件夹,其中包含 app.config 文件。对于每个不同的解决方案,每个工作区都可以维护自己的 ApplicatonSettings 文件夹,但可以维护来自源代码管理的共享项目的完全相同的副本。

我在 codeplex 有一个项目: http://wcfsilverlighthelper.codeplex.com/

这是我的意思的一个工作示例。查看 ApplicationSettings 文件夹,注意 app.config 文件在解决方案的 T4 项目中的使用方式。

【讨论】:

我面临的问题与原始海报大致相同,您的解决方案对我来说听起来不错。您介意发布您的 App.Config 文件的一部分来说明您是如何进行链接的吗? @estanford,我有一个项目托管在 codeplex 上:wcfsilverlighthelper.codeplex.com 这是一个完整的例子和我的意思的应用程序。下载源码看看ApplicationSettings文件夹,再看看csproj里面的app.config、settings.settings文件是怎么链接的,其实并没有在项目目录下。

以上是关于如何在不同的解决方案之间共享相同的 Visual Studio 项目?不同的 app.config 和 settings.settings的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .NET Core 类库中引用 Visual Studio 共享项目

在两个不同的 Django 项目之间共享模型

我们如何在 Spring Batch 中 Job 的不同步骤之间共享数据?

如何一次在一个解决方案中编写多个项目中的代码? [Visual Studio / Xamarin]

在 iOS 中具有不同 App ID 前缀的应用程序之间共享数据

如何在两个线程之间共享数据