第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C# 項(xiàng)目,編譯器抱怨缺少對(duì) log4net 的引用

C# 項(xiàng)目,編譯器抱怨缺少對(duì) log4net 的引用

C#
catspeake 2022-10-23 10:18:12
我正在使用 Visual Studio 2017 構(gòu)建一個(gè)大型 C# 項(xiàng)目(解決方案中有 200 多個(gè)項(xiàng)目)。在編譯其中一個(gè)項(xiàng)目時(shí),我遇到了很多錯(cuò)誤,如下所示:error CS0012: The type 'BufferingAppenderSkeleton' is defined in an assembly that is not referenced. You must add a reference to assembly 'log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'.然而,有問(wèn)題的項(xiàng)目確實(shí)引用了 log4net 1.2.11。唯一可疑的是在log4net的包路徑中找到的net40-full :“ C:\XXXX\Src\packages\log4net.1.2.11\lib\net40-full\log4net.dll ”在項(xiàng)目的 package.config 中,它包含以下行:<package id="log4net" version="1.2.11" targetFramework="net461" />在其 app.config 中,它包含以下行:      <dependentAssembly>     <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral"/>     <bindingRedirect oldVersion="0.0.0.0-1.2.11.0" newVersion="1.2.11.0"/>   </dependentAssembly>我想知道是不是 .net 版本(4.0 與 4.61)的不匹配導(dǎo)致了編譯錯(cuò)誤?C# 不是我的主要專(zhuān)業(yè)領(lǐng)域,但我的理解是 nuget 會(huì)查看這些配置文件以下載所需的包,在本例中為 log4net。那它怎么下載的是4.0版本而不是4.6.1的呢?
查看完整描述

1 回答

?
料青山看我應(yīng)如是

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)的原因。


查看完整回答
反對(duì) 回復(fù) 2022-10-23
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)