Jer*_*emy 18 visual-studio-2008 visual-studio
在VS(本例中为2008)中添加对Web应用程序项目的引用时,将创建csproj文件中的"hintpath"作为相对引用.有没有办法(使用GUI,而不是手动编辑文件)使其成为绝对引用(即C:\ Temp\DllName.dll)?
我遇到的问题是当单独的构建机器具有项目的不同工作目录时.当引用是相对的,并且引用的dll不在项目工作目录中时,相对引用可能不指向两台机器上的相同位置.
her*_*ube 10
这是一个老问题,但它仍然是相关的.我在寻找解决方案时偶然发现了它如何从第三方软件的全局存储库中引用程序集.
我现在的方法类似于thinkOfaNumber写的答案.我更喜欢将环境变量嵌入到.csproj文件中,而不是使用硬编码的绝对路径.然后环境变量保存绝对路径.例:
<Reference Include="Foo">
<HintPath>$(THIRDPARTY_ROOT)\foo\3.1.0\bin\foo.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
这种额外的间接级别可以灵活地在不同的构建机器上拥有不同的路径(例如开发人员系统与构建服务器).
不过,我仍然需要手动编辑.csproj文件来执行此操作.
我发现这样做的唯一方法是在添加引用后手动编辑csproj文件.
<Reference Include="foo, Version=1.2.3.4, Culture=neutral, ...">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\absolute\path\foo.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
是的,我讨厌绝对路径和它创建的所有自动部署疯狂,但在这种情况下,我必须引用一个.NET包装器,它使用必须"安装"的COM dll并对注册表执行操作等等.绝对路径是唯一的出路.
默认情况下,Visual Studio在最初添加引用时使用相对引用,因为它假定引用是指工作副本中其他位置的文件.
这曾经让我疯了,但我用三种不同的方式解决了它:
AssemblyFolders注册表项添加文件夹,这意味着您不再需要使用任何类型的路径来引用已知程序集.Gar*_*ary -2
我想提供帮助,但为什么这是必要的?自 2003 年 vs.net beta 以来,我从来没有这样做过。我认为这里还有另一个更深层次的问题。
如果必须,您可以尝试项目属性中的“参考路径”页面
| 归档时间: |
|
| 查看次数: |
8001 次 |
| 最近记录: |