实时搜索: nuget是什么

nuget是什么

279条评论 5760人喜欢 4748次阅读 697人点赞
...

nuget 需要将依赖打包进去吗: 如A包需要引用B包,然后在项目中安装A包时,自动把B包也装上。
在nuget命令行打包的时候,如果是指定项目的csproj文件进行打包的,都只能打包当前项目的dll,那么如果使用了第三方的dll而没有使用nuget进行安装,往往不会把这些dll打包进去,解决方法如下:
1、在要打包nuget的项目上,用nuget进行安装这些dll。好处:在用命令行打包时,会自动把依赖写入到nuget包的配置文件,然后安装这个项目打的nuget包时,会自动获取这些依赖dll的包。适合批处理打包和推送。

2、生成nuspec文件,然后手动添加files节点进行引入,详细参考:http://doc.nuget.org。缺点:需要手动编辑nuspec配置文件,不能很方便的用批处理打包和推送,需要麻烦的使用批处理操作配置文件,然后再打包和推送。

3、生成nuspec文件,然后用批处理或者powershell修改files节点,然后拷贝依赖的dll到指定目录,最后在nuget打包。缺点:批处理或powershell脚本非常麻烦的处理,容易出错,最后成功了之后也适合打包和推送。

以上操作都可用GUI工具进行打包推送,但是对于自动构建的项目不太适合,第一种方式完美解决。

最后发现:在nuget打包时,是无法用命令行添加依赖包和dll的。

如何使用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>

记得将上面的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<int, int> GetIntPair()
{
return new Castle.Core.Pair<int, int>(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

<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
<projectUrl>http://apworks.org</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>First release</releaseNotes>
<copyright>Copyright 2013</copyright>
</metadata>
</package>

注意两点: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进行学习研究。

如何把.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] [<project>]

二.描述

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)。



请问JuraScript支持.net core吗 或者有什么nuget包可以从.net code里运行JS函数,类似于Microsoft.JScript: .net是后台语言,需要编译后才能运行。而JavaScript是前端语言。.net不能运行JavaScript的函数,但JavaScript可以通过ajax访问.net的方法。

vs2012 nuget cefsharp.wpf在哪个目录: 使用: 使用的过程比较简单,直接使用如下代码即可。
private void MainWindow_Loaded(object sender, RoutedEventArgs e) { var setting = new CefSharp.CefSettings(); CefSharp.Cef.Initialize(setting, true, false); var webView = new Cef。

Nuget很慢,我们该怎么办:   网速正常,但打开英雄联盟,更新速度慢。可按以下方法操作:  一、通过安全卫士:  1、现在我们就要打开安全卫士,并点击&uot;流量防火墙&uot;。  2、打开之后,选中&uot;TenioDL.exe&uot;,用鼠标右键点击,然后按&uot;结束进程&uot;,OK。  二、任务管理器  1、打开任务管理器,找到TenioDL.exe这个程序  2、然后鼠标左击选中,点击右下角:结束进程,然后就可以了。更新系统的测速器会有一点延迟,稍微等待一下,速度就会提上去了。  提示:TenioDL.exe只是游戏的一个下载进程,你只要进行下载腾讯的游戏或安装时都有的,占用流量大。

如何卸载nuget里面的安转包: 1,就是你在安装这个软件以后,这个软件就自己带有一个卸载的程序,你只要点击:开始---程序---找到这个程序----上面就会有这个程序的卸载程序。
2,就是通过“添加与删除”来卸载,这个程序一般的WINDOS,自己都会带这个程序,你点:开始--控制面板---添加与删除----找到这个要卸载的程序---点删除就OK了。
3,就是利用第三方软件。我用腾讯电脑管家举例(免费安全软件,杀毒+管理2合1)。打开腾讯电脑管家——工具箱——软件卸载。电脑管家是直接把软件卸载同时把注册列表也就清理了。(有的软件重启后会自动删除)卸载完之后,会有残留,在实行【强力卸载】

nuget中安装了npm包后执行命令时怎么强制结束: 1、npm install moduleName:安装指定名称的模块 安装完,在node_modules目录下生成moduleName模块。 node包的安装分两种:本地安装、全局安装。两者的区别如下: 本地安装:package会被下载到当前所在目录,也只能在当前目录下使用。

  • 20个月孩子隔几个小时可以喂药

    现在项目 需要将 hibernate 更换成mybatis 应该怎么更换 ?希望能有个 流程或者参考的资料: 这个 真心得看代码是怎么写的 写得好的 应该直接 写一套mybatis的配置文件和dao 直接替换就可以 ...

    880条评论 4555人喜欢 5377次阅读 915人点赞
  • mg是什么车的标志

    mybatis jdbctype数据类型写和不写的区别: 一般情况下是需要的,否则mybatis强行插入可能会报错。简单的比如数据库中的字段是int类型,mybatis中用jdbcType=varchar类型去映射,这样不会报错。强制将字符串插入数据中整型。最好类型一致,避...

    456条评论 5145人喜欢 2670次阅读 866人点赞
  • excel如何作图

    谁有歌手2017中谭晶唱的那首《九儿》: 上传到百度云了 去下载吧 不知道能保存多久 五期的mp3都有链接:http://pan.baidu.com/s/1qYTkZYc 密码:u2bp ...

    699条评论 5504人喜欢 1901次阅读 959人点赞
  • hcg检查报告多久出来

    dnf现在阿修罗50级觉醒任务在哪接,看清楚,是现在大转移之后的。: 还是gsd,就是地方换了,在暗黑城的大厅里 ...

    503条评论 6128人喜欢 5248次阅读 437人点赞