2010-04-07 61 views
16

我是新来的Visual Studio,来自Delphi。Visual Studio:添加项目/添加为链接而不仅仅添加

我有一个目录树满的.cs文件(根\共同)。
我也有充分的应用程序目录树(根\应用程序)
最后,我有一个树上开满大会(根\组件)

我想继续我的.cs文件在Common树中以及Assmblies树中的所有环境voodoo(解决方案,项目,设置,元数据,调试数据,bin等)。所以,举个简单的例子,我有一个名为PdMagic.Common.Math.dll的程序集。该解决方案和项目位于\ Assemblies \ Common \ Math。所有源代码(.cs)文件都在\ Common \ Math中。 (matrix.cs,trig.cs,mathtypes.cs,mathfuncs.cs,stats.cs等)

当我使用Add Existing Item将matrix.cs添加到我的项目中时,它的副本是添加到\ Assemblies \ Common \ Math文件夹中。我只想引用它。我不想多份拷贝。我已经尝试添加现有项目,并使用下拉菜单添加链接而不是“添加”,这似乎是我想要的。

问:什么是“最佳实践”为这样的事情?大多数人只是把这些.cs文件放在与项目相同的文件夹中?为什么不是“添加链接”的默认值?

谢谢!

+0

为了回答您的其他问题,Prism团队在完成这项工作方面做了大量工作。看看这篇文章:http://msdn.microsoft.com/en-us/magazine/ee321573.aspx – NerdFury 2010-04-09 20:37:23

+0

棱镜“项目链接器”是完美的。正是我想到的。现在我必须弄清楚我是否可以使用它。谢谢。 – 2010-04-14 14:49:04

回答

11

在这种情况下,“最佳做法”是不打这个工具。它可以让你做你想做的事情,但是如果你让IDE为你组织项目,你就可以完成更多的工作,并且能够专注于代码。

我会创建一个名为PdMagic的空解决方案。常见

这会给你喜欢

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 

的文件结构,然后我一般添加src和libs文件夹(通过文件系统,而不是VS)

libs文件夹里面,我会放我所有的第三方的依赖,以及src文件夹将举行我所有的项目

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 
PdMagic.Common\libs 
PdMagic.Common\libs\nunit 
PdMagic.Common\src 

接下来,在Visual Studio中,我会用鼠标右键单击我刚刚创建的解决方案,并单击“添加 - >新建项目”,我指定我希望它在\ src文件夹中创建并调用它PdMagic.Common.Math

现在我的文件夹结构是这样的

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 
PdMagic.Common\libs 
PdMagic.Common\libs\nunit 
PdMagic.Common\src 
PdMagic.Common\src\PdMagic.Common.Math 
PdMagic.Common\src\PdMagic.Common.Math\PdMagic.Common.Math.csproj 
PdMagic.Common\src\PdMagic.Common.Math\Class1.cs 

然后,您将类添加到您的PdMagic.Common.Math项目中,它们将放入包含项目文件的文件夹中。 IDE就是这样认为我们应该工作的,我认为大多数开发人员都会这样做,因为试图在文件系统上获得任何其他布局需要与IDE进行太多的争夺。我知道来自不同的约定可能很难,并且你本能地希望在新的环境中使用相同的约定。然而,如果你坚持约定(根据你的意见是对的还是错的),你会做的更多,因为你不会试图强迫IDE以你认为应该完成的方式来完成任务。

+0

这就是我正在寻找的答案。在你写这篇文章时,我正在做一些自我实验,并提出了一个我不确定它能处理的(常见)案例。我针对Silverlight和WPF。大多数源代码(.cs)是相同的,但是必须为每个源编译不同的程序集。所以,我需要有用于SL的PdMagic.Common.Math和用于WPF的PdMagic.Common.Math。我认为这需要两个使用相同Class1.cs的项目。我可以麻烦你进一步采取这一步吗? 再次感谢您的回答。 – 2010-04-09 13:57:40

1

我认为“最佳实践”是有那些“共同”套路成可以代替参考源文件揪成一堆不同项目的集合。你可以将它作为一个预先建立的程序集添加“添加引用...”,或者通过包含该程序集的项目并添加对项目的引用(也可以在“添加引用...”对话框中完成)。

这是这似乎是一些工作,以建立最初的时候(可能是)那些事情之一,但它通常从长远来看回报。

+0

@MichaelBurr:你打败了我!更快的键盘,我猜。 – Cyberherbalist 2010-04-07 15:30:59

+0

我认为他想组织他的项目和文件,而不是VS认为他应该这样做,所以他正在与IDE战斗,让他们按自己想要的方式做事,而不是MS如何表达自己应该想要的。我不认为他正在尝试重新使用不同程序集中已有的代码。 – NerdFury 2010-04-07 15:34:33

+0

@NerdFury:据我所知,.cs文件目前不在装配中;不过,我认为将它们打包成一个或多个程序集供多个项目使用可能是一个好主意。这可能会被迫进入IDE的做事方式,但我认为这是对所提问题的回答。 – 2010-04-07 16:16:29

1

如果你想“参考” matrix.cs在您的项目,不要使用添加现有项目,创建一个引用(“添加引用”)的类库或对象matrix.cs是的一部分。如果你不想(或不能使用)matrix.cs所属的库或对象,那么添加链接就是你如何得到它的,但是我认真地说我从未使用过这个特殊的功能。

我已经在.NET中工作过的开发商无隔离在单独的文件夹中的文件的.cs。 MVC中唯一一种类似于我所看到的作为实践的隔离,其中模型,视图和控制器位于其自己的文件夹中。

+0

谢谢。我的意图是将matrix.cs和其他.cs代码放入PdMagic.Common.Math库中,以便其他项目可以引用它。如果您不介意,请查看我对原始帖子的评论。工具供应商如何处理针对SL和WPF代码的常见.cs案例?这些通常可以是相同的.cs,但需要为每个构建不同的组件。 – 2010-04-09 14:02:50

1

因为要引用matrix.cs项目,不只需使用AddExistigItem,为该类创建一个新的参考。

66

你可以使用添加链接添加点击小向下箭头,添加按钮的右键 - >现有项命令

(Thanks Peter)

虽然我意识到这不是对原始问题(关于最佳实践)的回答,我提出这个答案是为了节省由这个问题的误导性标题引导到这里的其他人的时间。

+2

迄今为止最好的答案,所以这里是你的+10代表! – 2012-04-23 18:16:54

+5

不是上述问题的最佳答案,而是我寻找的答案! – 2013-05-22 12:45:02

+0

自从它有版本号之前,我一直在Visual Studio中工作,而且我从未注意到此功能!谢谢! (注意@GrantWinney,我确认你的理论;这个问题在“如何将文件添加为链接”方面排名很高,这就是我到这里的原因。) – 2015-04-10 21:30:35

相关问题