0

我已经克隆了一个包含引用Json.Net作为Nuget包的VS项目的git存储库。该参考出现在形式:是否可以重写Visual Studio项目文件中的Nuget提示路径?

<HintPath>..\..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> 

我有克隆的资源库(与所有我的其他Git仓库一起)D:\Repos。如你所见,没有办法让我的软件包安装3个以上的目录。

使用环境变量(NUGET_PACKAGES)或packages.config文件不会出现覆盖是获得硬烤成的软件包安装项目文件的相对路径。

虽然可以通过在文件系统中更深入地嵌入此特定回购3文件夹来解决此确切实例,但这不是解决问题的办法。

是否有可能告诉Visual Studio忽略这些作者指定的HintPath s而偏向某种用户指定的路径?

回答

0

如果您使用的是packages.config文件,则无法在添加NuGet包时禁用提示路径。

我会看看在解决方案旁边使用NuGet.Config文件,并使用repositoryPath设置来定义您希望软件包的位置。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <config> 
    <add key="repositoryPath" value="../MyPackages" /> 
    </config> 
</configuration> 

另一种选择是使用project.json文件,虽然这个文件会在某个时候消失。使用project.json文件意味着您根本没有存储在.csproj文件中的任何提示路径。程序集在构建时解析。

+0

这不是我的存储库,所以我不能像那样修改它。有人会认为有一个'repositoryPath'字段的配置我自己的本地副本将覆盖HintPaths,但没有......显然这太方便了。看来整个系统是为了对抗开源软件而设计的。 –

+0

您可以将NuGet.Config文件放在存储库外的目录中。 NuGet会上到目录树,直到它找到一个NuGet.Config文件。但是,如果您无法修改.csproj文件,如果它们位于不同的存储库中,我不确定您可以执行任何操作。他们将始终引用其他软件包目录。 –

+0

那么没有解决方案?这完全超出了nuget或Visual Studio解决方案的整体功能范围? –