首页 > 编程语言 >使用 NuGet.Server 创建和部署 ASP.NET Web 应用程序搭建私有Nuget服务器

使用 NuGet.Server 创建和部署 ASP.NET Web 应用程序搭建私有Nuget服务器

时间:2024-01-28 20:55:57浏览次数:41  
标签:Web ASP web -- nuget NuGet 文件夹 Server

使用 NuGet.Server 创建和部署 ASP.NET Web 应用程序搭建私有Nuget服务器

  1. 在Visual Studio中,选择“新建>文件>”Project,搜索“ASP.NET Web 应用程序 (.NET Framework) ”,选择 C# 的匹配模板。

    Select the .NET Framework web project template

  2. 将“框架”设置为“.NET Framework 4.6” 。

    Setting the target framework for a new project

  3. 为应用程序提供除 NuGet.Server 之外的合适名称,选择“确定”,在接下来出现的对话框中选择“空”模板,然后选择“确定” 。

    Select the empty web project

  4. 右键单击项目,选择“管理 NuGet 包” 。

  5. 如果面向 .NET Framework 4.6,请在“包管理器 UI”中,选择“浏览器”选项卡,然后搜索并安装 NuGet.Server 包的最新版本 。 (也可以使用 Install-Package NuGet.Server 从包管理器控制台安装。)如果出现提示,请接受此许可条款。

    Installing the NuGet.Server package

  6. 安装 NuGet.Server 会将空 Web 应用程序转换成包源。 此操作会安装各种其他包,在应用程序中创建 Packages 文件夹,并修改 web.config 以包括其他设置(请参阅该文件中的注释部分以获取详细信息)。

    重要

    在 NuGet.Server 包完成对该文件的修改后,仔细检查 web.config。 NuGet.Server 可能不会覆盖现有元素,而会创建重复元素。 稍后尝试运行该项目时,这些重复项会导致“内部服务器错误”。 例如,如果 web.config 在安装 NuGet.Server 之前包含 <compilation debug="true" targetFramework="4.5.2" />,则该包不会覆盖它,而是会插入另一个 <compilation debug="true" targetFramework="4.6" />。 在这种情况下,请删除具有较旧框架版本的元素。

  7. 在不使用调试或 Ctrl+F5) 的情况下,使用调试>"开始"菜单在本地运行站点Visual Studio (。 主页提供包源 URL,如下所示。 如果发现错误,请仔细检查 web.config 是否有重复元素(如前文所述)。

    Default home page for an application with NuGet.Server

  8. 首次运行应用程序时,NuGet.Server 会重新构建 Packages 文件夹,以包含每个包的文件夹。 这符合 NuGet 3.3 中引入的用于提高性能的本地存储布局。 添加更多包时,请继续遵照此结构。

  9. 测试本地部署后,请根据需要将应用程序部署到任何其他内部或外部网站。

  10. 部署到 http://<domain> 后,用于包源的 URL 将为 http://<domain>/nuget

以外部方式向源添加包

NuGet.Server 站点运行后,就可以使用 nuget push 添加包,前提是在 web.config 中设置了 API 密钥值。

安装 NuGet.Server 包后,web.config 包含一个空 appSetting/apiKey 值:

XML

<appSettings>
    <add key="apiKey" value="" />
</appSettings>

省略 apiKey 或将其留空时,会禁用向源推送包的功能。

要启用此功能,请设置 apiKey 的值(理想情况下为强密码),并添加值为 true 名为 appSettings/requireApiKey 的密钥:

XML

<appSettings>
    <!-- Sets whether an API Key is required to push/delete packages -->
    <add key="requireApiKey" value="true" />

    <!-- Set a shared password (for all users) to push/delete packages -->
    <add key="apiKey" value="" />
</appSettings>

如果服务器已受保护或不需要其他 API 密钥(例如,在本地团队网络上使用专用服务器时),可将 requireApiKey 设置为 false。 然后,有权访问服务器的所有用户均可推送包。

从 NuGet.Server 3.0.0 开始,推送包的 URL 更改为 http://<domain>/nuget。 在 3.0.0 版本之前,推送 URL 为 http://<domain>/api/v2/package

对于 NuGet 3.2.1 和更高版本,除 /nuget 外,默认还会通过启动配置(默认为 NuGetODataConfig.cs)中的 enableLegacyPushRoute: true 选项启用此旧 URL /api/v2/package。 请注意,在同一项目中托管多个源时,此功能不适用。

从源中删除包

使用 NuGet.Server 时,nuget delete 命令会从存储库中删除一个包,但前提是包含 API 密钥和注释。

如果想要改变行为以从列表中删除包(将其保留为可用于包还原),请将 web.config 中的 enableDelisting 键更改为 true。

配置包文件夹

对于 NuGet.Server 1.5 和更高版本,可使用 web.config 中的 appSettings/packagesPath 值自定义包文件夹:

XML

<appSettings>
    <!-- Set the value here to specify your custom packages folder. -->
    <add key="packagesPath" value="C:\MyPackages" />
</appSettings>

packagesPath 可以是绝对或虚拟路径。

省略 packagesPath 或将其留空时,包文件夹是默认的 ~/Packages

发布 Web 应用时使包可用

要在向服务器发布应用程序时在源中提供包,请将每个 .nupkg 文件添加到 Visual Studio 中的 Packages 文件夹,然后将每个文件的“生成操作”设置为“内容”,将“复制到输出目录”设置为“始终复制” :

Copying packages to the Packages folder in the project

NuGetServer部署到IIs上

Packages文件夹,是发布的nuget程序包所存的地址

在VS2022配置私有NuGet包源

1、项目鼠标右键打开菜单项,选择管理NuGet程序包,打开NuGet包管理器

2、在顶部菜单栏,工具=》选项,弹出对话框

发布NuGet程序包

1、新建一个.Net 8类库项目,随便写入一些代码,在项目鼠标右键选择属性,在项目属性页面,包常规里,在构建时生成NuGet包选择框中选中,生成项目

2、推送包,打开项目生成的Nuget包所在文件夹,输入cmd,定位到该文件夹下,输入命令

需要apikey
dotnet nuget push NuGet包名 --api-key APIkey --source NuGet服务器地址
dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
不需要apikey
dotnet nuget push NuGet包名 --source NuGet服务器地址
dotnet nuget push DeanNuGet.Package.Consul.1.0.0.nupkg --source http://127.0.0.1:8088/nuget

推送包第二种,直接把该包文件直接复制到NuGetServer服务所在的文件夹里的Packages文件夹下

使用私有NuGet程序包源查找发布的程序包

部署私有nuget.server服务参考文档:
https://learn.microsoft.com/zh-cn/nuget/hosting-packages/nuget-server (推荐)

https://www.cnblogs.com/rqcim/p/15923931.html

打包参考文档:
https://learn.microsoft.com/zh-cn/nuget/quickstart/create-and-publish-a-package-using-visual-studio?tabs=netcore-cli(推荐)
https://zhuanlan.zhihu.com/p/649744350
https://www.cnblogs.com/elsons/p/17012023.html

推送包
使用cmd进入包文件所在的目录,从包含 .nupkg 文件的文件夹运行以下命令。 指定 .nupkg 文件名,并将密钥值替换为 API 密钥。

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

没有密钥

dotnet nuget push DeanNuGet.Package.Consul.1.0.0.nupkg --source http://127.0.0.1:8088/nuget

标签:Web,ASP,web,--,nuget,NuGet,文件夹,Server
From: https://www.cnblogs.com/hudean/p/17993315

相关文章

  • SQLServer和Oracle常用函数对比
      1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select flo......
  • Windows Server 2012 R2 安装 Visual C++ Redistributable (VC_redist.x64) 失败 0x80
    PHP8需要 VisualC++RedistributableforVisualStudio2019,但怎么都装不上,有个0x80240017-未指定的错误。 看日志 Windows8.1-KB2999226-x64.msu好像有补丁安装失败了,网上找到一篇解决办法:https://blog.51cto.com/u_12701820/3032471能成功安装VC,但是PHP8无法......
  • 在K8S中,api-server究竟是如何实现高可用?
    在Kubernetes(K8S)中,实现APIServer(kube-apiserver)的高可用性是构建稳定和可靠的集群架构的关键部分。以下是KubernetesAPIServer实现高可用的主要方法:冗余部署:通常会部署多个APIServer实例,并且它们之间是无状态的,这样任何一个实例崩溃或维护时,其他实例可以继续处理请求。......
  • RWCTF体验赛-WEB部分
    RWCTF体验赛-WEB部分Be-More-ElegantS2-066—ApacheStruts2文件上传漏洞(CVE-2023-50164)漏洞原理就算利用大小写和解析顺序来绕过过滤器,实现目录穿越的任意文件上传POST/upload.actionHTTP/1.1Host:47.99.57.31:8080User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x......
  • mysql连接报错:The server time zone value '�й���׼ʱ��'
    java.sql.SQLException:Theservertimezonevalue'�й���׼ʱ��'isunrecognizedorrepresentsmorethanonetimezone.YoumustconfigureeithertheserverorJDBCdriver(viatheserverTimezoneconfigurationproperty)touseamorespecifctimez......
  • .net core8 knife4 web api文档
    knife4官网:https://github.com/luoyunchong/IGeekFan.AspNetCore.Knife4jUI1.创建.netcore8webapi项目2.nuget包管理添加如下包:Swashbuckle.AspNetCore.SwaggerSwashbuckle.AspNetCore.SwaggerGenIGeekFan.AspNetCore.Knife4jUI  3.在项目右键-属性-生成-......
  • 2、【实操】dash库设计web界面对mysql数据进行展示
    dash+mysql的简单应用python库简介:  dash:web界面的UI设计;  pymysql:MySQL数据库连接、操作引擎pandas:使用read.sql("sql",mysql_connection)函数将msyql的表单数据转换成DataFrame格式 第一步:  实现对MySQL数据库的连接,并对表单的数据进行展示    ......
  • Burp Suite Professional 2024.1.1 (macOS, Linux, Windows) - Web 应用安全、测试和
    BurpSuiteProfessional2024.1.1(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgB......
  • windowForm程序的webView2错误 System.IO.FileNotFoundException: 系统找不到指定的文
    最近开发公司的一个项目,要求打包在windows中执行的exe可执行文件开始我想到的是使用windowsForm里面webView嵌套网页执行,vs自带提供的WebBrowser的内核是ie7的,兼容性确实不好,后面使用Microsoft.Web.WebView2(通过NuGet安装)兼容性问题解决了。在我的电脑上可以完整的运行,但是在同......
  • SQL Server 2012 版本后的自带分页语法
    SQLServer2012与之前版本相比,增加了好多实用性的功能,在之前,数据表中的记录较多,需要分页时,算法比较麻烦,2012版本之后,增加了优雅分页语法,可通过简单的语法实现分页:Select*FromTb_tableOrderBy<排序列>OffSet<起始位置>ROWSFetchNext<返回的行数>RowsOnly说明:1、<......