1 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
我的理解是,nuget 會(huì)查看這些配置文件以下載所需的包,在本例中為 log4net。
NuGet 的工作只是下載包并提取其中的任何內(nèi)容,至少在 package.config 項(xiàng)目的還原方案中是這樣。文件中的targetFramework
屬性packages.config
僅由nuget 客戶端寫(xiě)入,從不讀取。我不知道它的目的或意圖是什么。無(wú)論如何,我相信targetFramework
.NET Framework 的價(jià)值只是您的項(xiàng)目在安裝包時(shí)使用的。
那它怎么下載的是4.0版本而不是4.6.1的呢?
背景信息,如果你真的不在乎,請(qǐng)?zhí)较乱欢?。如果您轉(zhuǎn)到 nuget.org 上的包頁(yè)面,您會(huì)在版本歷史記錄中看到未顯示 1.2.11。但是,如果您查看其他版本的 URL,您可以猜出1.2.11 版本的 URL??焖倨x主題的評(píng)論,F(xiàn)abio M 很接近,但說(shuō)包不再存在并不完全正確?!?nbsp;nuget.org 不支持永久刪除包。這樣做會(huì)破壞每個(gè)項(xiàng)目,具體取決于包的可用性,尤其是涉及包還原的構(gòu)建工作流。 ”。在包版本頁(yè)面上,有一條消息說(shuō)“所有者已取消列出此包。這可能意味著該包已被棄用或不應(yīng)再使用”。
回到我的觀點(diǎn),一旦您訪問(wèn)此 URL,請(qǐng)將 nuget.org 中的 n 更改為 f 以查看 fuget.org 上的包版本。在框架旁邊,您可以看到包支持的框架列表。net40 是該軟件包支持的最高版本。
因此,NuGet “下載 4.0 版本”的原因是因?yàn)檫@是 nuget 包提供的與您的項(xiàng)目兼容的最接近的版本。.NET 通常被認(rèn)為是向前兼容的,因此 net45 二進(jìn)制文件在 net462 運(yùn)行時(shí)上工作,因此當(dāng)您的項(xiàng)目使用較新版本時(shí),通??梢允褂?net45 二進(jìn)制文件。
最后,關(guān)于您遇到的錯(cuò)誤,正如我在第一段中所說(shuō)的,在 packages.config 項(xiàng)目中,nuget 的工作只是下載和解壓縮包。在安裝時(shí),它會(huì)向 csproj 添加一些信息,以便編譯器可以嘗試查找 dll。因此,如果您查看您的 csproj,您應(yīng)該會(huì)找到對(duì) log4net.dll 的引用,它將包含編譯器使用的提示路徑。如果該提示路徑錯(cuò)誤,那么您將看到您看到的錯(cuò)誤。這在項(xiàng)目在目錄結(jié)構(gòu)中移動(dòng)但不重新安裝包時(shí)最常見(jiàn)。例如,如果 repo 結(jié)構(gòu)原本是“project\project.csproj”,現(xiàn)在改為“src\project\project.csproj”,則提示路徑為“..\packages\log4net.1.2.11\lib\net45\ log4net.dll”是錯(cuò)誤的,因?yàn)轭~外的“..\” 需要添加,所以包文件夾的相對(duì)路徑是正確的。提示路徑錯(cuò)誤可能還有其他原因,但這是最常見(jiàn)的原因。
- 1 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報(bào)