如何使用nuget命令发布一个测试版本的package

如何使用nuget命令发布一个测试版本的package,第1张

使用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功能非常强大,有兴趣的朋友可以上进行学习研究。

为什么搞win服务器,Linux上能搞何必win
Windows
The Redis project does not officially support Windows However, the Microsoft Open Tech group develops and maintains this Windows port targeting Win64 Learn more
人家说了官方上不支持,但是也设计了接口面向64的,你去github上看了么
This is a port for Windows based on Redis
We officially support the 64-bit version only Although you can build the 32-bit version from source if desired
You can download the latest unsigned binaries and the unsigned MSI installer from the release page
For releases prior to 28171, the binaries can found in a zip file inside the source archive, under the bin/release folder
Signed binaries are available through NuGet and Chocolatey
Redis can be installed as a Windows Service
从这看运行也不是不可能
>ORA-03134: 不再支持连接到此版本的服务器。
ORA-03134: Connections to this server version are no longer supported
Cause: An attempt was made to connect to an Oracle server of older version
Action: Please refer to documentation for more details
------------------------------------------------------
8i必须是把补丁打到8174
select from v$version;
-------------------------------------------------------
10g的支持817以上版本!
11g就只支持9i以上版本了!

服务端的项目要 nuget 安装 MicrosoftAspNetSignalR;
客户端的项目要 nuget 安装 MicrosoftAspNetSignalRClient。
并且两端版本要匹配。题主的配置目前是这样吗?

我自己以前都是先安装vs2013然后安装mysql版本56260msi。里面自带了mysql-for-visualstudio-123的链接器。安装的时候就有了。可是重装了系统安装了vs2015再安装56260msi之后。发现创建EF连接器的时候找不到mysql的dababase,然后我用电脑管家看了也找不到安装 mysql-for-visualstudi123的迹象我去C盘发现了 mysql-for-visualstudi12的目录。。。。肯定是这个没有正确的安装吧(我没有删除这个文件)。于是到网上重新下载了 mysql-for-visualstudio-127的。关闭vs2015和mysql的服务。安装之后。开启mysql服务。重新打开vs2015完美解决了。

您好,SignalR常常依托于ASPNET应用程序运行于IIS中,但它还可以自我托管(比如作为console winform、Windows
service)只要我们使用self-host库就可以了
该库向所有的SignalR 2库一样,构建于OWIN (Open Web Interface for
NET)OWIN定义了一个在NET web 服务端和web 应用程序的抽象
OWIN解耦了从服务端来的web 应用程序,这使得OWIN对于子托管web应用程序于自己的进程中得以表现得很完美。
不托管于IIS的原因有:
IIS的环境不能构建,比如一个已经存在的服务端程序(没有运行于IIS),
IIS的性能开销需要注意的地方,
signalr功能需要添加到一个现有的应用程序,比如运行在 Windows Service, Azure worker role, 或者 其他进程。
如果我们处于性能原因考虑使用self-host,我们推荐将程序同时在IIS中运行测试,来看看性能的具体好处。

不太明白你的意思。
1种方式是SingleR的方式。这种方式的原理是 客服端每次请求都会创建一个GuID连接唯一吗,根据这个就能知道是哪个客服端了,用Nuget下载一个包就可以了
你在程序包管理控制台可输入install-package MicrosoftAspNetSignalR 也可以安装,然后去官方看文档
2你说的根据IP的方式我给你一个获取IP的方法。
public static string
IPAddressAll
{
get
{
string
ip =
>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12633696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存