转载自:https://blog.csdn.net/xCyansun/java/article/details/78879193
第一步,打开VS Code,使用快捷键“Ctrl + `”打开终端,或者在菜单栏的“查看”菜单中找到“集成终端”并点击。在打开的终端窗口中输入一下命令定位到保存程序的目录,并新建文件夹“LocalNupkgRefExample”,文件夹名称自己定义。如下图所示。
命令说明:
cd 参数:DOS命令,定位到参数中指定的文件夹
mkdir 参数:DOS命令,在当前目录创建文件夹,名称由参数指定。如果参数中指定了路径,那么会在指定的位置创建文件夹,例如 mkdir ../Test,会在上一级目录创建Test文文件夹。
为了方便管理文件,我们可以在VS Code中打开刚才创建的文件夹(“文件”菜单下的“打开文件夹”项),然后通过VS Code的资源管理器管理里面的文件,这里不再多说,这些操作自己可以向玩新手机一样自己尝试一下。
注意:本示例是用.Net Core 2.0做的,如果你的电脑上没有安装,请先下载并安装。安装后其实只要使用记事本和控制台也可以编写本示例。
、
第二步,使用dotnet new命令添加一个空项目,命名为“LocalNupkgLib”,用来作为被引用的本地包(现在叫做“包”并不合适,因为这只是编写时管理程序的项目,还没有打包)。如下图所示。运行命令后会在当前目录“LocalNupkgRefExample”下创建一个文件夹“LocalNupkgLib”,并在里面创建名称为LocalNupkgLib的项目文件,以及一个名称为Class1的类文件。
命令说明:
dotnet new 模板 -n 名称:在使用.net core命令时需要使用dotnet命令提示符,new命令用于表明添加新文件, 模板用于指出文件类型,-n指示该文件名称由后面的参数“名称”指定。截图中模板为classlib,表示创建类库。如果不使用-n指定文件名称,会默认以当前文件夹的名称为文件名称。
可以使用 dotnet new或dotnet new -h或者dotnet new --help来查看new命令可以创建哪些文件类型。
第三步,在资源管理器中修改Class1的名称为MyClassLib(删除这个类文件再添加新的也可以),修改类名称为MyClassLib,并在里面添加一个属性Message,用于在其他项目中使用。
第四步,将刚才的项目打包。使用命令pack将项目打包到指定位置。
命令说明:
pack 项目名称 -o 目标位置:项目名称就是在之前创建的项目LocaNupkgLib.csproj的名称LocalNupkgLib,-o后面输入要将包放在哪个位置,如果不指明位置,默认会打包到要打包的项目的生成文件中,即Debug文件夹里面。这里为了便于其他项目引用,将位置放在了与该项目同级的文件夹LocalNupkgRefExample下。
如果打包时项目名称写上了扩展名,那么就需要在运行命令时写上项目目录,如下图所示,当前命令所在的目录是LocalNupkgRefExample,而项目文件LocakNupkgLib是在子文件夹LocalNupkgLib中,所以直接运行命令dotnet pack LocalNupkgLib.csproj -o ..mypack就发生报错,提示找不到项目文件,而不上子文件夹后就可以正常打包了。
个人猜想在不写项目扩展名时,系统认为项目是在所提供的文件夹LocalNupkgLib中,会在这个文件夹中查找项目文件,名称不一样也没关系(这一点还没验证)。
打包后可以在资源管理器中看到刚才生成的文件夹mypacks,里面包含一个包文件LocalNupkgLib.1.0.0.nupkg。
如果需要了解详细的打包命令,可以使用dotnet pack -h来查看。
第四步,添加控制台项目,用于引用刚才生成的包。
使用命令dotnet new console -n LocalNupkgApp添加一个控制台项目。这一个和添加类库的命令类似,只是将classlib改为了console。其他不再做说明。
在资源管理器中展开LocalNupkgApp文件夹,可以看到里面有一个项目文件LocalNupkgApp.csproj。打开Program.cs类文件,我们在里面调用一下在上一个项目中添加的类库LocalNupkgLib中的方法。如下图所示。这里因为还没有引用打包好的包文件,所以不会有智能提示。
可以使用命令 dotnet new或者dotnet new -h来查看可以生成哪些类型的问题。
第五步,生成一下这个控制台项目,看看会发生什么。
使用命令dotnet build LocalNupkgApp后发生了报错,如下图所示,这个报错提示Program.cs中应该输入“;”。检查后发现上面修改的Program.cs中缺少了一个分号,添加后保存。
重新运行命令,发生了另外一个报错:缺少引用。是不是和Visual Studio中发生的问题一样?接下来就是要解决这个引用的问题了。
第六步,在控制台项目中添加本地引用。
运行命令dotnet add LocalNupkgApp package LocalNupkgLib。运行后发生报错,提示找不到这个包。注意错误提示,是到一个网站上查找的,而不是本地我们指定的那个位置mypacks。
为了让系统知道从哪里找我们的包文件,我们需要修改一个控制台项目的项目文件LocalNupkgApp.csproj.
如下图所示,打开LocalNupkgApp.csproj文件,在PropertyGroup中添加元素<RestoreSources>..mypacks</RestoreSources>,“..mypacks”即是我们指定的包位置,因为mypacks文件夹位于控制台项目文件夹的上一级,所以需要使用“..”来确定相对路径。
再次运行包引用命令。可以看到已经没有报错,并且显示添加上了包。这时在查看LocalNupkgApp.csproj文件可以看到里面已经添加了一个元素<PackageReference>。当然这个元素我们也可以手动添加到项目文件中,而不用命令行。
第七步,重新生成项目。已经没有报错了。
第八步,运行项目。可以看到已经显示了我们添加的消息。
运行项目使用run命令,注意要添加-p用来指定项目名称。
转载自:https://blog.csdn.net/xCyansun/java/article/details/78879193