簡體   English   中英

生成的nuget包中缺少Project .dll本身

[英]Project .dll itself is missing in generated nuget package

我正在使用c#.net核心項目。 項目名稱為Master ,它具有外部NuGet程序包的依賴關系,如“ SpecFlow.CustomPlugin”。 主項目有兩個類Shape.csFactory.cs

當我生成Master項目的NuGet包時,Shape.cs和Factory.cs類的實現可以用作其他項目中的庫。 在生成Master項目的NuGet包后,我只看到“SpecFlow.CustomPlugin”內容及其自己的相關dll文件,但我無法在新生成的NuGet包中看到dll的Master項目。

假設消費者是另一個項目中包含的新生成的NuGet包。 消費者希望使用Shape.cs方法和Factory.cs方法,但無法訪問。

主項目依賴關系看起來像: 在此輸入圖像描述

首先,確保ShapeFactory是公開的。 如果您不指定它們的可見性,則默認情況下它們是私有的,這意味着它們不能被其他項目直接用作包參考或項目參考。

master打包到NuGet軟件包中時,它將創建的默認文件為bin\\Debug\\master.1.0.0.nupkg 假設master以.NET Standard 2.0為目標, lib\\netstandard20\\master.dll master的dll保存為nupkg中的lib\\netstandard20\\master.dll 您需要將此nupkg添加/推送到nuget feed(可以是您的計算機或網絡上的目錄,nuget.org,或者您可以托管自己的Feed )。 comsumer項目將需要一個nuget.config ,增加了正確的NuGet飼料的來源,那么你添加到主包裝基准。 還原后(如果通過UI添加了包,Visual Studio會自動執行該操作),然后可以使用master的任何公共類。

您可以在命令行上運行以下命令來設置兩個項目,一個是程序包,另一個將使用它。 如果您在Visual Studio中使用.NET Core,則它必須已經下載了.NET Core SDK,這會將dotnet cli放在您的路徑上。 您還需要從https://www.nuget.org/downloads/下載nuget.exe。

dotnet new nugetconfig
nuget source -configfile nuget.config add -name local -source feed

# create an isolated nuget environment, because I don't like to populate
# my global packages folder with test packages
nuget config -configfile nuget.config -set globalPackagesFolder=gpf

# create a library, pack it, and add the nupkg to our local feed
dotnet new classlib -n MyLib
dotnet pack MyLib\MyLib.csproj -o nupkgs\
nuget add MyLib\bin\Debug\MyLib.1.0.0.nupkg -s local

# create console app and reference MyLib
dotnet new console -n MyApp
dotnet add MyApp\MyApp.csproj package MyLib --version 1.0.0

#if you want to open these projects in Visual Studio
dotnet new sln -n sample
dotnet sln add MyLib\MyLib.csproj
dotnet sln add MyApp\MyApp.csproj
start sample.sln

通常,您不會使用NuGet包在同一解決方案中使用另一個項目中的一個項目。 只需為它們提供項目引用,然后將項目打包到NuGet包中時,該項目引用將成為NuGet依賴項。 我這樣做只是為了演示如何輕松使用自己創建的包。

暫無
暫無

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

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