nuget

时间:2024-03-16 02:19:46编辑:分享君

如何使用nuget添加第三方组件

使用NuGet发布自己的类库包(Library Package)
NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些Visual Studio的插件等。作为一名开发人员,您可能也会开发一些公共组件以供他人使用,本文将一步步介绍如何以最简单的方式将自己所开发的类库包发布到nuget上,以供更多的人使用。
背景
如果你还是不知道什么是NuGet,那么就看这样一个案例:我现在需要在我的项目中引用Castle.Core程序集,按照以往的做法,就是从Castle Projects官方网站,下载一个最新版本的dll,然后把它复制到项目的lib目录下(或者随便什么地方都行),这样做不仅繁琐,而且你需要时刻关心官网上这个程序集的最新版本信息(当然或许你也不会去关注),更烦的是,如果你是一个开源项目的Contributor,你还需要花一定的时间去管理所有的这些libs,不仅如此,如果你是使用的源代码管理系统来管理项目源码,比如使用git等,那你还不得不把这些libs上传到源代码管理系统中,否则团队中的其他组员即使获得了源代码,也无法正确编译。但这样做又大大增加了源代码的存储空间,使得代码克隆和下载都变得非常耗时。
现在,就可以直接使用NuGet来解决所有问题,我们先创建一个Class Library,命名为DaxnetNugetTest,然后在这个项目上点右键,选择Manage NuGet Packages:

在弹出的对话框中,搜索Castle关键字,然后在搜索结果列表中选择Castle.Core,单击Install按钮:

安装完成后,Castle.Core的程序集就被引用到项目中了,同时在项目中多出了一个packages.config文件,以向NuGet表明,当前项目使用了哪些Package,版本是什么,以及是基于哪个版本的.NET Framework。
今后,如果Castle.Core程序集有版本更新,则同样可以使用Manage NuGet Packages菜单打开上面的对话框,然后在左边的Updates列表中,就会列出发生了版本更新的Package,如果有,则单击Update按钮即可更新。
更有趣的是,如果你在解决方案上点右键,选择Enable NuGet Package Restore菜单,那么在你编译项目的时候,NuGet会自动分析出你项目所依赖的第三方组件,然后在编译开始之前会自动上网下载所需的版本,因此,你也就不要去维护这些libs了,更没必要把这些libs也上传到源代码管理系统中。

不过这些也都不是本文的重点,本文的重点是,介绍如何将自己的Class Library发布到NuGet上。
发布自己的类库包(Library Package)
STEP 1:在NuGet上注册并获取API Key
首先,你需要到NuGet上注册一个新的账号,然后在My Account页面,获取一个API Key,这个过程很简单,我就不作说明了。
STEP 2:下载NuGet.exe
NuGet有个命令行工具:NuGet.exe,非常好用,不过使用之前需要下载,下载地址:http://nuget.codeplex.com/downloads/get/669083。为了方便使用,请设置机器的PATH环境变量,将NuGet.exe的路径添加到PATH中。
STEP 3:设置API Key
使用以下命令设置NuGet API Key:

1

nuget setApiKey


记得将上面的my_api_key替换为STEP 1中获得的API Key。
STEP 4:开发自己的类库(Class Library)
上面我们新建了一个类库:DaxnetNugetTest,并通过NuGet添加了对Castle.Core的引用,现在我们添加一些代码,来使用Castle.Core所提供的一些功能。我们将Class1.cs改名为CastleHelper.cs,此时也会将Class1类改名为CastleHelper。在CastleHelper.cs中写入以下代码:

1
2
3
4
5
6
7

public class CastleHelper
{
public static Castle.Core.Pair GetIntPair()
{
return new Castle.Core.Pair(20, 30);
}
}


然后,打开AssemblyInfo.cs文件,将assembly的属性设置好,记得再设置一下AssemblyVersion特性,以指定我们类库的版本。目前我们使用1.0.0.0版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

[assembly: AssemblyTitle("DaxnetNugetTest")]
[assembly: AssemblyDescription("Daxnet's test of the NuGet.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("daxnet")]
[assembly: AssemblyProduct("DaxnetNugetTest")]
[assembly: AssemblyCopyright("Copyright © daxnet 2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: ComVisible(false)]

[assembly: Guid("20662b9f-91de-4515-9c8c-ced3d61589e1")]

[assembly: AssemblyVersion("1.0.0.0")]


全部设置好以后,编译整个项目待用。
STEP 5:产生并修改nuspec
nuspec是NuGet将项目打包成nupkg的输入文件,可以通过nuget spec命令产生。在命令提示符下,进入DaxnetNugetTest.csproj文件所在目录,然后执行:

1

nuget spec


此时会提示创建成功:

用notepad打开DaxnetNugetTest.nuspec文件,把需要替换的信息替换掉,不需要的tag全部删掉,注意里面的$xxx$宏,这些就是引用了AssemblyInfo.cs中的设置值,在编译产生package的时候,会使用AssemblyInfo.cs中的相应值进行替换。完成编辑后,我们的nuspec文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16




$id$
$version$
$title$
$author$
$author$
http://www.apache.org/licenses/LICENSE-2.0.html
http://apworks.org
false
$description$
First release
Copyright 2013




注意两点:1、$description$使用AssemblyDescriptionAttribute的值进行替换,在产生package之前,一定要记得先编译项目,否则会提示$description$找不到的错误;2、releaseNotes如果没有,就直接删掉这个节点,如果有,则填入自己的内容,不要使用默认内容,否则会在下一步产生警告信息。
STEP 6:产生类库包(Library Package)
同样在DaxnetNugetTest.csproj路径下,使用下面的命令产生NuGet类库包:

1

nuget pack DaxnetNugetTest.csproj


成功后,提示:

注意:由于我们的项目通过NuGet引用了Castle.Core,因此,它将会作为一个依赖组件(dependency)打包到产生的nupkg文件中。
另外,NuGet会使用默认的项目配置所产生的程序集进行打包。如果项目默认是Debug,而你需要用Release打包,则使用下面的命令:

1

nuget pack DaxnetNugetTest.csproj -Prop Configuration=Release


STEP 7:发布类库包
现在,通过以下命令发布类库包:

1

nuget push DaxnetNugetTest.1.0.0.0.nupkg


完成以后,出现以下提示:

STEP 8:测试已发布的类库包
新建一个控制台应用程序,在项目上点右键,选择Manage NuGet Packages,在搜索框中输入DaxnetNugetTest,此时我们发布的Package已经可以显示了:

单击Install按钮,NuGet会自动分析组件依赖关系,然后把所需要的所有程序集都下载下来并添加到项目引用中:

写一点代码来测试:

1
2
3
4
5
6
7
8
9

class Program
{
static void Main(string[] args)
{
var pair = DaxnetNugetTest.CastleHelper.GetIntPair();
Console.WriteLine(pair.First);
Console.WriteLine(pair.Second);
}
}


输出如下:

STEP 9:更新类库包
随着类库开发进度不断向前,必然会有版本更新。更新类库包很简单,只需要在AssemblyInfo.cs中更新一下版本号,然后重新执行上面的STEP 6、7即可。注意在执行STEP 7的时候,nupkg的文件名应该使用新版本的文件名。
现在,我们重新打开DaxnetNugetTest项目,将CastleHelper类中的20,30改为40,50,然后打开AssemblyInfo.cs,版本号升级为2.0.0.0,重新编译项目,并重新产生、发布nupkg:

再打开用来测试的控制台程序,同样打开Manage NuGet Packages对话框,我们可以在Updates中看到,DaxnetNugetTest有了更新:

点击Update按钮,将类库更新到最新版本。重新运行这个控制台程序,我们发现,输出已经是最新版本的值了:

STEP 10:删除已发布的包
原则上,NuGet不允许用户删除已发布的包,而只能将其设置为不显示在Manage NuGet Packages的列表中。打开www.nuget.org,用已注册的账户登录后,可以在My Account页面选择Manage My Packages链接进入管理页面:

进入后,可以看到我们已发布的Packages:

点击DaxnetNugetTest左边的小垃圾桶图标,即可进入Listing页面,页面中我们也能看到“Permanently deleting packages is not supported”的提示。要将Package从Package List中移除,只需要去掉List DaxnetNugetTest 2.0.0.0 in search results选项前面的钩钩,然后单击Save按钮保存即可:

总结
本文简要介绍了NuGet的使用,并介绍了一种将自己开发的类库以NuGet Package的方式发布到NuGet服务器的简单方法。NuGet功能非常强大,有兴趣的朋友可以上www.nuget.org进行学习研究。


正在还原nuget程序包是怎么做到的

  一   启动 Visual Studio 二0一5 Community。   难度:☆☆☆☆☆   界面还是原来的配方和味道:左侧工具栏,右侧属性栏,下方输出栏。当然还有上方的标题栏和菜单栏,标题栏的最右边多了个 Quick Launch 框,功能上和 Office 二0一陆 的 Tell me 框非常类似。   这个框还让我想起了 Ubuntu Unity 桌面的 HUD。   二   新建项目。   难度:☆☆☆☆☆   File(文件)——>New(新建)——>Project…(项目),即可以新建一个编程项目。   码农都是键盘侠,耻于用鼠标的;那我们在下一步骤试试键盘操作的新功能。   三   另一种方法新建项目。   难度:☆☆☆☆☆   按 Ctrl + Q 键盘组合键,光标定位在标题栏右侧的 Quick Launch 框里;输入“new”这个单词,下面列出一大溜与“新建”有关的命令;位于第一条的,正是我们在第 二 步骤中点击的菜单。我们可以点击它,同样可以新建一个项目。   四   新建项目中的设置。   难度:★☆☆☆☆   第 二、第 三 步骤的结果是一样的,都是弹出 New Project(新项目)对话框。   这里,我们在左侧点选 Visual C#,在中间点选 WPF Application,在下方的 Name 框里,将默认的 WpfApplication一 名字,改成自己想要的、更加有意义的名字,比如我改成了 JingyanApp。   最后点 OK。   5   修改窗体标题。   难度:★★☆☆☆   Visual Studio 开始工作,硬盘转了一会,一个空白的 Windows 窗体呈现在我们面前。我们在它的边框上点击,然后到屏幕右下角的 Properties(属性)子窗口中,滚动到 Appearance(外观)一节里,找到 Title(窗口标题)框,把默认的 mainWindow 标题名称改成我们想要的,比如:“经验”。   陆   现在往空白窗体里放置控件。   难度:★☆☆☆☆   我们点击 Visual Studio 窗口左侧的 ToolBox,在 Common WPF Controls(通用控件)一节里,找到 TextBlock(文本块),用鼠标把它拖放到那个标题为“经验”的窗体里。   漆   继续添加控件。   难度:☆☆☆☆☆   用与第 陆 步骤同样的方法,我们在往“经验”窗体里放置两个 RadioButton(单选按钮)和一个 Button(普通按钮)。   吧   修改控件属性。   难度:★★☆☆☆   然后再到 Properties 子窗口里,改变上述所有控件的显示文字。(Properties 子窗口——> Common ——> Content 或 Text)。   最后,可以用鼠标拖放的方法,将现有控件的位置进行调整。   9   进入编程写代码模式。   难度:☆☆☆☆☆   直到第 吧 步骤,我们大部分时间都是在点鼠标、改文字。   现在,到了见证编程奇迹的时刻了。   我们在显示“确定”文字的按钮上面双击,Visual Studio 激活编程窗口。   一0   编写代码。   难度:★★★☆☆   在光标处,我们输入以下编码:   if (radioButton.IsChecked == true)   {   MessageBox.Show("经验你好!");   }   else   {   radioButton一.IsChecked = true;   MessageBox.Show("经验再见!");   }   大体意思是:如果选了“经验你好”的单选按钮,然后单击确定,则显示包含“经验你好”的提示对话框;否则,显示“经验再见”的对话框。   一一   运行程序。   难度:★☆☆☆☆   现在让我们来看看,我们的第一个程序是否能够正常运行。   Debug——>Start Debugging,或者直接按键盘上的 F5 键,程序开始运行。   如果你的编码和第 一0 步骤中的一样,我们在第 陆 —— 吧 步骤中设计好的窗体就会出现在屏幕上


如何把.net core 打包到nuget

NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以及更新组件即可一键完成,大大提升工作效率,减少不必要的引用报错。从运维角度,可在不影响老版本的情况下发布新版本,可统一管理公司各个项目中组件版本不一和各个版本组件的使用情况,减少故障发生以并使得项目稳定运行。以往做nuget包一般要么用命令行,要么用nuget的图形化界面去做,但是一些操作比较麻烦.比如引入命名空间,引入第三方nuget包。这些在.NET Core项目里却很简单,只需要使用命令行dotnet pack,在.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门 做了简要介绍,下面来详细介绍下这个命令。dotnet-pack - 将代码打包成 NuGet 包一.概要dotnet pack [--output] [--no-build] [--build-base-path] [--configuration] [--version-suffix] []二.描述dotnet pack 命令生成项目并创建 NuGet 包。这个操作的结果是两个 nupkg 扩展名的包。一个包含代码,另一个包含调试符号。该项目被依赖的 NuGet 包装被添加到 nuspec 文件,因此,能够在安装包时得到解决。默认情况下,项目到项目之间的引用是不打包到项目中的。如果想那样做,需要在依赖中引用需要项目的 type 节点设置为 “build” ,设置就像下面的例子:默认情况下,dotnet pack 首先生成项目。如果想避免这样,传递 --no-build 选项。这在持续集成(CI)构建场景,正如所知道代码仅仅是预生成的示例,是很有用的三.选项[project]打包的项目。还可以是一个 project.json 文件的路径或者是目录。如果忽略,将默认为当前目录。-o, --output [DIR]指定生成的目录。--no-build打包进程中跳过生成阶段。--build-base-path指定临时生成产物的目录。默认情况下,在当前目录的 obj 目录。-c, --configuration [Debug|Release]当生成项目时使用的配置。如果没有指定,将默认为 “Debug”。四.例子dotnet pack打包当前项目。dotnet pack ~/projects/app1/project.json打包 app1 项目。dotnet pack --output nupkgs打包当前的应用程序,并将生成的包放置到指定的文件夹中。dotnet pack --no-build --output nupkgs打包当前的项目到指定的文件夹中,并跳过生成步骤回到在.NET Core系列 :3 、使用多个项目 创建的类库项目DotnetNewLib,切换到DotnetNewLib 目录下执行 dotnet pack命令:(1)目录结构如下:上面的结构里把obj目录拿掉了,看到在Debug目录下生成了2个文件DotnetNewLib.1.0.0.nupkg 和DotnetNewLib.1.0.0.symbols.nupkg, 这些就是nuget 包.(2)版本号信息来自于project.json文件:(3)但是生成的是Debug,生成Release 版本:(4)生成了Release目录在Release目录下 生成了2个文件DotnetNewLib.1.0.0.nupkg 和DotnetNewLib.1.0.0.symbols.nupkg,第一个文件就是想要的nuget包。来看下Nuget 包里的具体内容,可以用NuGet Package Explorer 工具打开DotnetNewLib.1.0.0.nupkg:里面仅有一个 lib 文件 netstandard1.6 目标配置文件。这意味着, NuGet 包只适用于.Net Core 应用程序 针对 NetStandard1.6 (和即将到来的 4.6.3)。

正在还原nuget程序包是怎么做到的

使用程序包恢复功能可以在提交源代码时, 不需要将代码库提交到源代码管理中,大幅减少项目的尺寸。所有NuGet程序包都存储在解决方案的Packages文件夹中。

要启用程序包恢复功能,可右键单击解决方案(注意,不是右键单击项目文件),并选择 Enable NuGet Package Restore (启用NuGet程序包还原) 选项。屏幕上会显示一系列提示对话框


我们会看到一个确认的提示对话框。


确定之后,开始配置解决方案的 Nuget 包管理。配置完成之后,会有一个提示。


完成之后,解决方案中添加了一个 .nuget 的解决方案文件夹。


以后,在解决方案中,项目需要添加 Nuget 包引用的时候,就可以通过项目的右键菜单,找到 Nuget 包管理器。


比如,我们可以为项目添加一个 Redis 的包。

添加完成之后。



注意,项目中增加了一个 packages.config 的文件。


项目文件中的 packages.config 文件内容

xml version="1.0" encoding="utf-8"?>


packages>
实际的程序集在解决方案的文件夹中保存了。


在签入代码的时候,不需要将 packages 中的程序集文件签入代码管理中,这样可以减少代码库的尺寸。

在签出代码之后,如果我们本地缺少某个代码库,比如 jQuery

xml version="1.0" encoding="utf-8"?>



packages>


我们可以在解决方案中右键菜单,为解决方案管理 NuGet 包。


如果我们的解决方案中,有缺失的包,在打开的对话框标题上,会有一个黄色的提示条。最右边有一个 Restore (还原),点击之后,NuGet 就会自动帮我们将相应的代码库下载到本地解决方案的 packages 文件夹中了。


如何学好一门外语???

多听多说多练,这是必然的,下面说说我的经验吧:我在2008年全国英语专业四级考试中取得了全年级第一的成绩。当时差不多用了两个月左右的时间,每天早上六点起床,打开电脑(因为我们学校六点才给电,那时室友还都在睡梦中呢)开始听听力,用的是一本快速VOA的书,刚开始听懂一句就写下一句,不懂得连听几遍如果还是听不出来就直接看参考,这样听写完一篇以后,再跟着mp3模仿语音语调以及语速。后来渐渐适应了以后就不再写了,直接就听,听懂一句放一句,连续几遍还是不懂就看参考,最后跟着朗读模仿。这样听完一篇VOA新闻报道大概要用40分钟的时间,我是每天都这么听得,专四考试轻松过关。我主张考通过听力和口语来提高英语水平,听力就像我说的那样练,只要你能坚持2个月,突然有一天你就会发现你在听任何材料感觉都差不多了,因为主要意思都能听懂了,甚至每个单词的发音都很清晰,意思都很理解,完全没有之前,模模糊糊不适应的感觉,这大概就是所谓的“顿悟”吧,但是质变是建立在量变的基础之上的,一定要坚持每天都听,而不是一次性听很多内容,然后又几天都不听英语,这样没用。注意,根据自己的水平选好听力材料,然后就练吧,这是成为英语达人的必经之路。再说口语,如果找不到老外练习,就看电影,第一遍正常看,了解剧情,从第二便开始就要不断暂停和倒退了,你要跟着演员,模仿他们的发音,不断重复他们的台词,因为电影里的对话是最生活化最地道的,注意挑几部发音纯正的,我最喜欢美音,所以都选好莱坞大片进行模仿。曾经有一个老师模仿变形金刚中擎天柱的发音,练了两个月最后他的模仿被新东方选中录制放到了网站上,英语发音纯正到没有人相信他不是在美国出生的,而他本人根本就没出过国,一个老外觉得很惊讶就问他是通过什么途径练英语的,他说:“movies”,又问:“how many movies have you watched?”答:“tons”老外无语了,深深震撼。其实通过我所说的通过听力和口语来带动英语水平是非常有效地,也不枯燥,不像死啃书本那样无聊。通过这两种方法,你不仅发音纯正地道了,掌握了许多简洁有效的口语短句,更重要的是,你的词汇量会在不知不觉中成倍增加,有了这些方面的提高,你的英语想不进步都难。相信我,祝你成功。同学你好,如今我早就过了专业八级,并已经靠英语在工作了,以上是我以前在别人遇到英语学习方法问题的时候的回答,中国人想要学好英语方法都是大同小异的,希望能供你参考。


如何打开vs nuget 命令行

Nuget的VS 指令
1.安装指定版本类库
install-package unity -version 3.5.14
2.安装到指定的项目
install-package unity -project XXXProjectName -version 3.5.14
3.重新安装所有Nuget包(整个解决方案都会重新安装)
update-package -reinstall
4.重新安装指定项目所有Nuget包
update-package -project XXXProjectName -reinstall
5.卸载Nuget包
uninstall-package unity


上一篇:索尼 mt27i

下一篇:我是钢琴家