如何在Visual Studio的版本控制下在解决方案中引用和发布外部/第三方.NET DLL? 快速问题

如何在Visual Studio的版本控制下在解决方案中引用和发布外部/第三方.NET DLL? 快速问题,.net,visual-studio,version-control,.net-assembly,projects-and-solutions,.net,Visual Studio,Version Control,.net Assembly,Projects And Solutions,如何正确添加对外部/第三方.NET DLL的引用(它不是NuGet包,也不在GAC中),并强制将其作为Visual Studio中解决方案的一部分(在版本控制下)提供 长话短说 我有一个Visual Studio 2013解决方案,其中包含两个.NET项目。该解决方案受源代码管理。当然,项目使用了很多已安装的NuGet软件包。但是其中一个项目需要引用一个外部/第三方.NET DLL,该DLL不能作为NuGet包使用,也不能驻留在GAC中。如果我只是在项目中添加一个对该DLL的引用,它目前可以正常

如何正确添加对外部/第三方.NET DLL的引用(它不是NuGet包,也不在GAC中),并强制将其作为Visual Studio中解决方案的一部分(在版本控制下)提供

长话短说
我有一个Visual Studio 2013解决方案,其中包含两个.NET项目。该解决方案受源代码管理。当然,项目使用了很多已安装的NuGet软件包。但是其中一个项目需要引用一个外部/第三方.NET DLL,该DLL不能作为NuGet包使用,也不能驻留在GAC中。如果我只是在项目中添加一个对该DLL的引用,它目前可以正常工作。但是,在我签入修改后的变更集后,任何获得最新版本解决方案的人都会遇到构建问题,因为该用户的计算机上没有被引用的.NET DLL。

您可以在需要DLL的项目中创建一个新文件夹,然后从此处引用项目中的DLL,然后在DLL中选中KCK。
当其他用户将获得最新的项目/解决方案时,他们将自动获得此dll,并且在构建时不会遇到问题。

我看到了两种可能的解决方案

  • 您可以在TFS上添加dll。例如,在解决方案下创建一个名为lib的文件夹,并将dll放在其中。然后从该文件夹中引用dll。在中检查更改时,请将lib文件夹包含在dll中。一旦其他人获得最新的,他们将同时获得您的更改和新的dll。请注意,在解决方案文件夹下引用的dll使用相对路径,因此任何拥有该文件夹和解决方案文件夹中的dll的其他人都不需要执行任何其他操作

  • 使用该dll制作一个nuget包,并将其托管在您自己的nuget提要上。您可以获取提要并将其托管在专用计算机上的iis上,也可以使用网络共享:)。Nuget也适用于“文件夹源”。Nuget提要只是文件夹存储库上的一个奇特ui。这增加了一个优点,即在源代码管理下不会有DLL


  • <好运>

    您可以考虑在源代码管理中检查外部DLL。在项目文件夹中创建一个“Externals”文件夹,并将外部DLL放在那里。使用此路径引用外部DLL。这应该适用于其他开发人员,以及当他们签出时,他们将在csproj中拥有DLL和适当的相对路径

    谢谢你的两种选择!这一次我将研究第一个方案,但将考虑将来第二个方案的可能性。如果我在解决方案文件夹下创建文件夹并将外部DLL复制到该文件夹,则源代码管理模块不会将所有这些操作检测为对我的解决方案的挂起更改。请您更详细地解释一下,我如何通过源代码管理来检测“lib”文件夹的创建,其中包含所需的外部.NET DLL?不幸的是,visual studio不会自动检测到挂起的更改,但这可以通过SourceControl Expolor轻松完成。导航到您的项目/分支机构/解决方案文件夹,右键单击该文件夹并选择“将项目添加到文件夹…”。将弹出一个向导,向您显示可用文件夹的列表。选择你的Lib文件夹并点击next。最初,TFS将忽略DLL,但您可以在Excuded items选项卡中找到它们。单击“排除”选项卡,包括它们并单击“完成”。然后dll将出现在挂起的更改中,并可以签入。