簡體   English   中英

我應該如何構建NuGet軟件包?

[英]How am I supposed to be building NuGet packages?

我有一些功能想提供給我正在從事的許多項目。 所以自然而然地,我想我應該制作一個NuGet包來包含共享代碼。 所以我:

  1. 創建了一個類庫(在本例中為ADUserCacheUsage)。
  2. 修復了該類庫的程序集信息。
  3. 使用ADUserCacheUsage.csproj進入目錄,並在命令窗口中執行nuget spec 這將生成一個.nuspec文件。
  4. 修復了我的項目的nuspec文件。
  5. nuget pack ADUserCacheUsage.csproj -Build -Symbols -Properties Configuration=Release (畢竟,如果有人在外部使用該軟件包,他們只需要發布版本,對嗎?)
  6. nuget add ADUserCacheUsage.1.0.0.nupkg -source "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages"

太好了,當我在程序包管理器中選擇機器源時,會顯示我的NuGet程序包。 所以我可以在項目中使用它。

我正在制作一個示例網頁來使用它。 該示例所做的只是調用一個函數並在網頁上輸出結果。

問題是,每當我嘗試在調試模式下運行此示例項目時,我都會收到警告消息

您正在調試ADUserCacheUsage.dll的發布版本。

因此,大概應該在發行版之外,在包中包括類庫的調試版本,對嗎? 我不希望示例項目的最終發行版會打擾調試信息,因為調試信息可能會很慢而且很blo腫(誠然,在一個僅作為示例的項目中,這個問題並不多,但是我正在考慮最佳實踐,並且在將來我可能會有更大,更復雜的軟件包)。

但我希望能夠在調試中運行而不會出現此錯誤。 每當我創建一個Web項目時,它都會包含許多其他項目,並且從不會給我有關NewtonSoft.json 那么,我應該怎么做才能正確地做到這一點? nuget.org上的每個軟件包是否都包含調試版本?

NuGet軟件包不包含調試信息。

而是有單獨的NuGet符號包(以.symbols.nupkg結尾) ,其中包含調試符號( .pdb文件)和源代碼文件。 可以使用nuget pack -Symbolsdotnet pack --include-symbols nuget pack -Symbols dotnet pack --include-symbols命令工具來創建符號包。

創建並托管符號包之后(在符號服務器上或在本地文件系統上),即使NuGet包中的代碼是使用Release模式構建的,也可以將Visual Studio配置為使用它們來單步執行代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM