可以用nuGet来打开。
1、首先需要打开nuGet的文件,如图所示,然后点击左上角的工具-nuGet程序包管理器。
2、然后选择之后,如图所示,再点击如图所示箭头的文字选项。
3、然后d出对话框,点击最右侧的绿色加号就是如图所示的标志。
4、接下来就是添加成功,就会有下面的链接,如图所示,这个时候回车键。
5、最后,就可以看到文件已经打开了,这样 *** 作即可解决问题了。
扩展资料
Nuget是 ASP NET Gallery 的一员。NuGet 免费、开源的包管理开发工具,专注于在 NET 应用开发过程中,简单地合并第三方的组件库。
当需要分享开发的工具或是库,需要建立一个Nuget package,然后把这个package放到Nuget的站点。如果想要使用别人已经开发好的工具或是库,只需要从站点获得这个package,并且安装到自己的Visual Studio项目或是解决方案里。
NuGet能更方便地把一些dll和文件(如jquery)添加到项目中,而不需要从文件中复制拷贝。
JQuery:Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 60+, FF 15+, Safari 20+, Opera 90+,Jquery 2x不支持IE6 ,IE7 ,IE8)。
jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。
Juice UI:Juice UI是开源的 WebForms 控件集,是一个功能强大的框架,它可以给ASP NET开发人员带来丰富的、可以作为易于使用的控件的jQuery UI小部件。
Juice项目是由appendTo在与微软和ComponentOne的合作下开发出来的。有了它,就可以在 ASP NET 项目中轻易地使用流行的 JavaScript 界面库。
Wijmo Open for Juice UI:Wijmo Open for Juice UI是为ASP NET社区提供一个免费的工具,作为一种对Juice项目的贡献,且为构建丰富的Web应用程序而扩大发行。
使用NuGet发布自己的类库包(Library Package)
NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些Visual Studio的插件等。作为一名开发人员,您可能也会开发一些公共组件以供他人使用,本文将一步步介绍如何以最简单的方式将自己所开发的类库包发布到nuget上,以供更多的人使用。
背景
如果你还是不知道什么是NuGet,那么就看这样一个案例:我现在需要在我的项目中引用CastleCore程序集,按照以往的做法,就是从Castle Projects官方网站,下载一个最新版本的dll,然后把它复制到项目的lib目录下(或者随便什么地方都行),这样做不仅繁琐,而且你需要时刻关心官网上这个程序集的最新版本信息(当然或许你也不会去关注),更烦的是,如果你是一个开源项目的Contributor,你还需要花一定的时间去管理所有的这些libs,不仅如此,如果你是使用的源代码管理系统来管理项目源码,比如使用git等,那你还不得不把这些libs上传到源代码管理系统中,否则团队中的其他组员即使获得了源代码,也无法正确编译。但这样做又大大增加了源代码的存储空间,使得代码克隆和下载都变得非常耗时。
现在,就可以直接使用NuGet来解决所有问题,我们先创建一个Class Library,命名为DaxnetNugetTest,然后在这个项目上点右键,选择Manage NuGet Packages:
在d出的对话框中,搜索Castle关键字,然后在搜索结果列表中选择CastleCore,单击Install按钮:
安装完成后,CastleCore的程序集就被引用到项目中了,同时在项目中多出了一个packagesconfig文件,以向NuGet表明,当前项目使用了哪些Package,版本是什么,以及是基于哪个版本的NET Framework。
今后,如果CastleCore程序集有版本更新,则同样可以使用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:下载NuGetexe
NuGet有个命令行工具:NuGetexe,非常好用,不过使用之前需要下载,下载地址:。为了方便使用,请设置机器的PATH环境变量,将NuGetexe的路径添加到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添加了对CastleCore的引用,现在我们添加一些代码,来使用CastleCore所提供的一些功能。我们将Class1cs改名为CastleHelpercs,此时也会将Class1类改名为CastleHelper。在CastleHelpercs中写入以下代码:
1
2
3
4
5
6
7
public class CastleHelper
{
public static CastleCorePair<int, int> GetIntPair()
{
return new CastleCorePair<int, int>(20, 30);
}
}
然后,打开AssemblyInfocs文件,将assembly的属性设置好,记得再设置一下AssemblyVersion特性,以指定我们类库的版本。目前我们使用1000版本:
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("1000")]
全部设置好以后,编译整个项目待用。
STEP 5:产生并修改nuspec
nuspec是NuGet将项目打包成nupkg的输入文件,可以通过nuget spec命令产生。在命令提示符下,进入DaxnetNugetTestcsproj文件所在目录,然后执行:
1
nuget spec
此时会提示创建成功:
用notepad打开DaxnetNugetTestnuspec文件,把需要替换的信息替换掉,不需要的tag全部删掉,注意里面的$xxx$宏,这些就是引用了AssemblyInfocs中的设置值,在编译产生package的时候,会使用AssemblyInfocs中的相应值进行替换。完成编辑后,我们的nuspec文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<xml version="10">
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl></licenseUrl>
<projectUrl></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)
同样在DaxnetNugetTestcsproj路径下,使用下面的命令产生NuGet类库包:
1
nuget pack DaxnetNugetTestcsproj
成功后,提示:
注意:由于我们的项目通过NuGet引用了CastleCore,因此,它将会作为一个依赖组件(dependency)打包到产生的nupkg文件中。
另外,NuGet会使用默认的项目配置所产生的程序集进行打包。如果项目默认是Debug,而你需要用Release打包,则使用下面的命令:
1
nuget pack DaxnetNugetTestcsproj -Prop Configuration=Release
STEP 7:发布类库包
现在,通过以下命令发布类库包:
1
nuget push DaxnetNugetTest1000nupkg
完成以后,出现以下提示:
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 = DaxnetNugetTestCastleHelperGetIntPair();
ConsoleWriteLine(pairFirst);
ConsoleWriteLine(pairSecond);
}
}
输出如下:
STEP 9:更新类库包
随着类库开发进度不断向前,必然会有版本更新。更新类库包很简单,只需要在AssemblyInfocs中更新一下版本号,然后重新执行上面的STEP 6、7即可。注意在执行STEP 7的时候,nupkg的文件名应该使用新版本的文件名。
现在,我们重新打开DaxnetNugetTest项目,将CastleHelper类中的20,30改为40,50,然后打开AssemblyInfocs,版本号升级为2000,重新编译项目,并重新产生、发布nupkg:
再打开用来测试的控制台程序,同样打开Manage NuGet Packages对话框,我们可以在Updates中看到,DaxnetNugetTest有了更新:
点击Update按钮,将类库更新到最新版本。重新运行这个控制台程序,我们发现,输出已经是最新版本的值了:
STEP 10:删除已发布的包
原则上,NuGet不允许用户删除已发布的包,而只能将其设置为不显示在Manage NuGet Packages的列表中。打开,用已注册的账户登录后,可以在My Account页面选择Manage My Packages链接进入管理页面:
进入后,可以看到我们已发布的Packages:
点击DaxnetNugetTest左边的小垃圾桶图标,即可进入Listing页面,页面中我们也能看到“Permanently deleting packages is not supported”的提示。要将Package从Package List中移除,只需要去掉List DaxnetNugetTest 2000 in search results选项前面的钩钩,然后单击Save按钮保存即可:
总结
本文简要介绍了NuGet的使用,并介绍了一种将自己开发的类库以NuGet Package的方式发布到NuGet服务器的简单方法。NuGet功能非常强大,有兴趣的朋友可以上进行学习研究。
使用NuGet发布自己的类库包(Library Package)
NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些Visual Studio的插件等。作为一名开发人员,您可能也会开发一些公共组件以供他人使用,本文将一步步介绍如何以最简单的方式将自己所开发的类库包发布到nuget上,以供更多的人使用。
背景
如果你还是不知道什么是NuGet,那么就看这样一个案例:我现在需要在我的项目中引用CastleCore程序集,按照以往的做法,就是从Castle Projects官方网站,下载一个最新版本的dll,然后把它复制到项目的lib目录下(或者随便什么地方都行),这样做不仅繁琐,而且你需要时刻关心官网上这个程序集的最新版本信息(当然或许你也不会去关注),更烦的是,如果你是一个开源项目的Contributor,你还需要花一定的时间去管理所有的这些libs,不仅如此,如果你是使用的源代码管理系统来管理项目源码,比如使用git等,那你还不得不把这些libs上传到源代码管理系统中,否则团队中的其他组员即使获得了源代码,也无法正确编译。但这样做又大大增加了源代码的存储空间,使得代码克隆和下载都变得非常耗时。
现在,就可以直接使用NuGet来解决所有问题,我们先创建一个Class Library,命名为DaxnetNugetTest,然后在这个项目上点右键,选择Manage NuGet Packages:
在d出的对话框中,搜索Castle关键字,然后在搜索结果列表中选择CastleCore,单击Install按钮:
安装完成后,CastleCore的程序集就被引用到项目中了,同时在项目中多出了一个packagesconfig文件,以向NuGet表明,当前项目使用了哪些Package,版本是什么,以及是基于哪个版本的NET Framework。
今后,如果CastleCore程序集有版本更新,则同样可以使用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:下载NuGetexe
NuGet有个命令行工具:NuGetexe,非常好用,不过使用之前需要下载,下载地址:>
本文将简单介绍在生产环境使用Nuget 要在实际生产环境使用它来做打包和包管理 比之更为成熟的Maven来说 从目前版本来看稍有不足
关于Nuget
官方提供的使用文档比较丰富
要在实际生产环境使用它来做打包和包管理 比之更为成熟的Maven来说 从目前版本来看稍有不足 主要是以下几点
nfig的继承和解决方案中的识别
比如
nuget updatexx sln : nuget nfig
它做的事只是对比包得版本是否有更新并更新之 只要版本没有变化 即使本地仓库没有这个包也不会去下载它 而
nuget install nfig
只能指定具体的config文件 不能通过一个sln件自动去扫描解决方案里的所有nfig
和build的集成度
类似上面一点 build的时候不会对本地仓库不存在的必备依赖去自动获取
nuget虽然提供 build参数 但是仅是使用了MSBuild 本身的构建描述能力缺乏(所以下文在生产环境使用会搭配NANT来完成构建过程) 而maven中则比较完整的集成了这个过程
repository的安装位置不可配置
默认情况下package的安装目录是在 sln所在的目录下建立一个packages目录 也就是说是solutionfile级别的 这个对于项目数量多的时候是比较难接受的 本地开发还好 在build服务器构建的时候就比较麻烦了 不能再同一个位置管理包
这个问题在它的官方已经有人在问了 估计下几个版本会有动作
以下提供一些解决上述问题或实际应用时的一些方法
下述范例所在目录结构
创建包描述文件:
< xmlversion xmlversion ="10" > < packagexmlns packagexmlns ="" > <metadata> <id> PackageCastle </id> <version> 21 </version> <title> Castle </title> <authors> Castle </authors> <owners/> <requireLicenseAcceptance> false </requireLicenseAcceptance> <description> IOC容器 </description> <copyright> 2011 </copyright> <language> zh-CN </language> </metadata> <files> < filesrc filesrc ="CastleCastleCoredll"target="lib et40CastleCoredll" /> < filesrc filesrc ="CastleCastleCorexml"target="lib et40CastleCorexml" /> < filesrc filesrc ="CastleCastleDynamicProxy2dll"target="lib et40CastleDynamicProxy2dll" /> < filesrc filesrc ="CastleCastleDynamicProxy2xml"target="lib et40CastleDynamicProxy2xml" /> < filesrc filesrc ="CastleCastleMicroKerneldll"target="lib et40CastleMicroKerneldll" /> < filesrc filesrc ="CastleCastleMicroKernelxml"target="lib et40CastleMicroKernelxml" /> < filesrc filesrc ="CastleCastleWindsordll"target="lib et40CastleWindsordll" /> < filesrc filesrc ="CastleCastleWindsorxml"target="lib et40CastleWindsorxml" /> </files> </package>
批量打包和发布到feeds,packbat脚本如下:
echo off mkdir assemblypackages echo pack forfiles /p assembly /m nuspec /c "cmd /c ools uget pack @file-outputdirectory packages" echo push forfiles /p assemblypackages /m nupkg /c "cmd /c ools uget push @file-s&//ops-base/feeds/hello1234" echo on
批量安装和更新本地package,nugetinstallbat脚本如下:
echo off echo install forfiles /s /m nfig /c "cmd /c %1 uget install @file -o %2" echo update forfiles /s /m nfig /c "cmd /c %1 uget update @file -source&//ops-base/feeds/nuget" echo on
然后使用NANT然完成构建过程,nantbuild部分内容如下:
< xmlversion xmlversion ="10" > < projectname projectname ="infrastructure"default="build" > < propertyname propertyname ="nfig"value="release"dynamic="true" /> <!--path--> < propertyname propertyname ="dir"value="" /> < propertyname propertyname ="dirtools"value=" ools" /> < propertyname propertyname ="buildbase"value="build${nfig}" /> < propertyname propertyname ="buildabsolutepath"value="${path::get-full-path(buildbase)}" /> <!--m uild-->10: < propertyname propertyname ="m uild"value="C:WINDOWSMicrosoftNETFrameworkv4030319MSBuildexe" /> < propertyname propertyname ="nfig"value="Debug"dynamic="true" /> < iftest iftest ="${nfig=='Release'}" > < propertyname propertyname ="nfig"value="Release" /> </if> < propertyname propertyname ="m uildparams" value="/t:rebuild /p:Configuration=${nfig} /p:AllowUnsafeBlocks=true /t:ResolveReferences" /> < propertyname propertyname ="m uildparamsweboutput"value="/t:_CopyWebApplication /p:WebProjectOutputDir=${buildabsolutepath}" /> < propertyname propertyname ="m uildparamsoutput"value="/p:OutputPath=${buildabsolutepath}" /> <!--nuget--> < propertyname propertyname ="nuget"value="${path::get-full-path(dirtools)}" /> < propertyname propertyname ="nugetpackages"value="${dir}packages" /> < propertyname propertyname ="nugetinstall"value="${dir} ugetinstallbat" /> < propertyname propertyname ="nugetparamsinstall"value="${nuget} ${path::get-full-path(nugetpackages)}" /> <!--build infrastructure--> < targetname targetname ="base"description="Infrastructure" > < execprogram execprogram ="${nugetinstall}"mandline="${nugetparamsinstall}"workingdir="${dir}" /> < execprogram execprogram ="${m uild}" mandline="${m uildparams} ${m uildparamsoutput}" workingdir="${dir}Infrastructure\" /> </target> </project>
上述nant脚本中,target=base的构建目标就是要构建的项目了,首先执行nugetinstallbat脚本更新本地packages,然后执行m uild
然后运行下述脚本执行构建:
ools antin ant base
lishixinzhi/Article/program/net/201311/13014
ProGet:非常优秀的库创建服务器,用于
1
下载NuGetexe NuGe
2
产生与修改nuspec文件nuspec是程序包清
3
注意:我在TestFormcsproj中添加了
4
在TestFormcsproj路径下使用命令行nug
5
NuGet会使用默认的项目配置所产生的程
6
如果项目中含有依赖,生成的nupkg也会
7
发布自己的包包到ProGet包包打包完就可
以上就是关于如何打开.nupkg文件全部的内容,包括:如何打开.nupkg文件、如何使用nuget命令发布一个测试版本的package、如何使用nuget添加第三方组件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)