第一个解决方案:\ Common \ Controls \ Controls.sln
及其项目:\ Common \ Controls \ Common.Controls \ Common.Controls.csproj
描述:这是一个包含此类的库:
public abstract class OurUserControl : UserControl
{
// Variables and other getters/setters common to our UserControls
}
第二个解决方案:\ AControl \ AControl.sln
及其项目:\ AControl \ AControl \ AControl.csproj
描述:在许多表单/类中,它将包含此类:
using Common.Controls;
namespace AControl
{
public partial class AControl : OurUserControl
{
// The implementation
}
}
关于添加引用的说明(不确定这是否相关):
当我添加引用(对于我创建的项目)时,使用上面的名称:
1.我将 Common.Controls.csproj 添加到 AControl.sln
2.在 AControl.sln 中,我关闭 Common.Controls.csproj 的构建
3.我将对 Common.Controls 的引用(按项目)添加到 AControl.csproj 。
这是我知道如何使Debug版本与Debug References匹配的(最简单)方式,以及Release版本以匹配Release References。
现在,问题出在哪里(实际使用UserControl的第三个解决方案/项目):
第三个解决方案:\ MainProj \ MainProj.sln
及其项目:\ MainProj \ MainProj \ MainProj.csproj
描述:以下是其中一个类的示例函数:
private void TestMethod<T>()
where T : Common.Controls.OurUserControl, new()
{
T TheObject = new T();
TheObject.OneOfTheSetters = something;
TheObject.AnotherOfTheSetters = something_else;
// Do stuff with the object
}
我们可能会这样称呼这个函数:
private void AnotherMethod()
{
TestMethod<AControl.AControl>();
}
这构建,运行和工作。没问题。奇怪的是,在我关闭项目/解决方案并重新打开它之后,到处都是红色的波浪形。我提出了我的错误列表,我看到了大量错误(任何与AControl有关的事都会被记录为错误)。
我会看到如下错误:
或实际方法内部(位于抽象类中的属性):
与此同时,我仍然可以构建并运行该项目(然后红色波浪线消失,直到我重新打开项目,或关闭/重新打开文件)。在我看来,我可能会错误地设置项目。想法?
答案 0 :(得分:1)
你不应该为你拥有的每个项目制定一个解决方案,但有一个解决方案包含多个项目(在你的情况下可能全部)。
您还可以制作包含重叠项目的多个解决方案。 例如。如果您经常只编辑核心库,请创建一个仅包含\ Common \ Controls \ Common.Controls \ Common.Controls.csproj项目的解决方案,并创建另一个包含所有三个项目以编辑其他两个项目。
这将为您提供迄今为止使用Visual Studio的最佳体验(您不再需要关心匹配调试/发布等)。