如何在SVN/Visual Studio中管理引用?

7

长期以来一直在寻找一种管理引用的方法,但没有找到理想的方式。

主要问题是:

1-) 我应该将所有使用的项目都包含在同一个解决方案中并引用该项目吗?还是只引用dll文件?

2-) 如果我应该引用dll文件,最好的方法是在每个项目内创建一个ReferencedAssemblies文件夹或svn根目录下的一个主文件夹?

3-) 在我的项目的bin文件夹中粘贴和引用dll文件可以吗?

4-) 在我的项目的bin文件夹中添加和提交dll文件可以吗?这样当新开发人员检出项目时,它将完美地编译,但这不是Visual Studio的默认行为,所有源控件默认忽略bin和obj文件夹,只添加.refresh文件(对于Web网站项目)

有人能帮帮我吗?


目前我们在Subversion中不包括bin/obj文件夹,但这需要重新添加引用(保存在某个网络目录中),当检出项目时。虽然它可以工作,但相当繁琐。 - JamesMLV
3个回答

3

1) 如果您在解决方案中包含已经在其他地方检入的项目,您可以在Visual Studio的解决方案级别上更改该项目的SVN绑定 (文件 > 源代码控制 > 更改源代码控制)。您需要将其更改为指向它在SVN存储库中的位置。

2) 如果有很多不同机器上的开发人员都想使用相同的库,最好有一个公共的地方放所有第三方库/程序集。没有必要在SVN存储库中到处复制它们。

3) 不,通常情况下不应该这样做。我会避免这样做 (除非有正当理由)。

4) 永远不要提交您的bin文件夹。默认行为是有原因的。.refresh文件是旧Web Site项目的副产品,它们是可以接受的。


2-) 当一个开发人员为一个项目测试新的dll版本时,这可能会导致问题。所有项目都将被更新。 - Felipe Pessoto
@Fujiy re 2:我相信这就是对库进行版本控制的好处所在。 - James Skemp

2

1) 在典型情况下,是的,您应该引用所有您拥有的项目。但是,您应该根据所引用项目的更改频率做出决策。例如,如果您有一个开源库,最好将其包含为程序集,因为您可能不会经常更改此代码。

2) 典型的方法是在SVN根目录下创建单独的单个目录,并将程序集放置在不同的子文件夹中,根据程序集类型进行分类。以下是我的当前文件夹的外观: alt text

3) 不,最好从bin文件夹中引用程序集。在构建过程中,所有引用的程序集都将被复制到bin中。还请注意,bin文件夹中*.refresh文件的目的是防止您不得不自己复制新版本。

4) 不,您不应提交您的bin文件夹,因为对于WebSites,您可以依赖*.refresh文件并忘记其他项目类型的问题。


0

1) 我认为这取决于你的具体情况,特别是因为Visual Studio在包含项目的解决方案上非常灵活(它不绑定到目录结构)。

我们有一些应用程序,其中一个解决方案包含多个项目(每个“部分”一个项目)。

2、3、4)关于在项目中引用和包含文件,为什么不使用Visual Studio内置的功能呢?以这种方式添加引用会将项目添加到您的csproj(vbproj)文件中。

(根据我的研究,如果您没有引用解决方案中的项目,请将DLL放在团队中的每个人都可以访问的目录中,并在添加引用时使用它。在项目文件中,它看起来像这样:

<Reference Include="Elmah">
    <HintPath>\\pathInformation\shared assemblies\ELMAH 1.1 32-bit\Elmah.dll</HintPath>
</Reference>

)

这也意味着您不必提交DLL文件;如果有任何更改,项目文件将相应更新。

(我承认,我对最后一点不确定。我看到很多人检入外部库,比如ELMAH。我通常遵循那些告诉您完全忽略bin目录的人。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接