防止发布到公共NuGet库

防止发布到公共NuGet库,nuget,Nuget,我们正在使用NuGet打包我们的内部依赖项。我们正在为这些设置一个私有的NuGet存储库 但是,我担心有人可能会意外地将我们的一个包发布到公共NuGet存储库 我能阻止吗?不,你不能。你不需要 如果有人将nuget包发布到错误的服务器,则表示有人对多个nuget服务器(比如您的本地gallery和nuget.org)具有相同的API密钥。这种情况的概率与Guid.NewGuid()将生成两个相等的Guid的概率相同。一个用于本地nuget服务器,另一个用于其他人将包发布到公共nuget服务器 或

我们正在使用NuGet打包我们的内部依赖项。我们正在为这些设置一个私有的NuGet存储库

但是,我担心有人可能会意外地将我们的一个包发布到公共NuGet存储库


我能阻止吗?

不,你不能。你不需要

如果有人将nuget包发布到错误的服务器,则表示有人对多个nuget服务器(比如您的本地gallery和nuget.org)具有相同的API密钥。这种情况的概率与
Guid.NewGuid()
将生成两个相等的Guid的概率相同。一个用于本地nuget服务器,另一个用于其他人将包发布到公共nuget服务器


或偶然在现实中意味着“偶然”。没有解决方案。

您可以使用引用内部NuGet Gallery实例的
DefaultPushSource
值定义
NuGet.config
文件。将配置文件放在内部软件包
nuspec
文件旁边

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="DefaultPushSource" value="https://nuget.example.com" />
  </config>
</configuration>

NuGet Config Defaults文件还允许指定默认推送源。如果nuget.exe的命令行参数中未提供推送源,则这将是默认推送源。如果NuGet配置默认值文件中没有默认推送源说明符,NuGet.org将是默认的NuGet.exe推送源。不过,通过使用新配置,管理员可以将默认推送源更改为内部包源。这将有助于防止意外将包发布到nuget.org


这也可能意味着API密钥是使用SetApiKey命令存储的。这个答案不正确。您忽略了setapikey命令。不幸的是,这似乎不适用于较新的客户端^3.0