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解決方案的整體功能範圍? –