添加对位于解决方案目录中的程序集的引用时,是否有任何方法可以相对地添加它,以便在签入和签出存储库时在项目中正确引用它?
扩展 Pavel Minaev 的原始评论 - Visual Studio 的 GUI 支持相对引用,假设您的 .sln 是相对引用的根。因此,如果您有解决方案
C:\myProj\myProj.sln
,您在 C:\myProj\
的子文件夹中添加的任何引用都会自动添加为相对引用。
要在单独的目录中添加相对引用,例如
C:/myReferences/myDLL.dll
,请执行以下操作:
在解决方案资源管理器中右键单击项目并选择添加引用...
,在 Visual Studio GUI 中添加引用找到此引用所在的 *.csproj 并在文本编辑器中打开它
编辑 < HintPath > 使其等于
<HintPath>..\..\myReferences\myDLL.dll</HintPath>
现在引用
C:\myReferences\myDLL.dll
。
是的,只需在解决方案中创建一个目录(例如 lib/),然后将 dll 添加到文件系统中的该目录并将其添加到项目中(添加->现有项目->等)。 然后根据您的项目添加参考。
我已经在 svn 和 cvs 下这样做过好几次了。
在 VS 2017 中它是自动的。所以就像平常一样
Add Reference
。
请注意,在
Reference Properties
中显示绝对路径,但在 .vbproj/.csproj
中使用相对路径。
<Reference Include="NETnetworkmanager">
<HintPath>..\..\libs\NETnetworkmanager.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
实现此目的的最简单方法可能是简单地将引用添加到程序集,然后(手动)修补相应 Visual Studio 项目文件(扩展名 .csproj)中引用的文本表示形式,使其成为相对的。
我已经在 VS 2005 中多次执行此操作,没有出现任何问题。
如前所述,您可以手动编辑项目的
.csproj
文件以便手动应用它。
我还注意到 Visual Studio 2013 尝试将相对路径应用到参考提示路径,可能是因为试图使项目文件更加可移植。
我知道这是一个老问题,但我在 VS2022 中遇到了这个问题,并找到了一个与上面提到的略有不同的解决方案。
您可以手动更新 csproj 文件以添加以下 ReferencePath:
<ReferencePath>$(SolutionDir)..\MyDllsSharedAcrossSolutions</ReferencePath>
所以我的 csproj 文件有这样的内容(因为我的相对路径在目录结构中位于较高位置)。
<Project ...>
<PropertyGroup>
<ReferencePath>$(SolutionDir)..\MyDllsSharedAcrossSolutions</ReferencePath>
</PropertyGroup>
...