Nuget私有源-可以在PackageReference中设置条件吗?

大卫784

我正在通过github设置一个私有的nuget源。一切正常,使用nuget.config如下所示(已编辑凭据部分):

<configuration>
  <packageSources>
    <add key="github" value="https://nuget.pkg.github.com/<my-company>/index.json" />
  </packageSources>
  <packageSourceCredentials>...</packageSourceCredentials>
</configuration>

注意,我不会清除其他packageSources:我仍然需要使用public nuget源。我只是在添加一个额外的私人资源。

就像我说的,一切正常,我可以从任一来源添加软件包。但是当我检查.NET中的PackageReference条目时,我不得不担心csproj它没有指出要使用哪个来源的软件包。

例如,在这种情况下,MyCompany.Common它来自我的私人来源,而Newtonsoft.Json来自公共nuget来源。

  <ItemGroup>
    <PackageReference Include="MyCompany.Common" Version="1.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
  </ItemGroup>

但是,如果有一个同名的公共软件包怎么办?我尝试了一下,并成功地工作了。因此,换句话说,如果有人猜到我的私有软件包名称,则下次有人克隆存储库并进行构建时,Visual Studio很可能会从错误的源中获取软件包。

有办法防止这种情况吗?我一直在阅读Nuget PackageReference文档,并且看起来甚至很近的唯一一件事可能是Condition

<PackageReference Include="Newtonsoft.Json" Version="9.0.1" Condition="'$(TargetFramework)' == 'net452'" />

但是看起来这更多是根据解决方案/项目/系统配置而不是软件包源来设置条件。

是否有条件可以指定软件包的来源?还是有其他可以指定特定程序包的nuget源的东西?

我认为这可能与本文有关

lastr2d2

这里有一个有趣的帖子

https://azure.microsoft.com/zh-cn/resources/3-ways-to-mitigate-risk-using-private-package-feeds/

我发现最实用的方法是使用锁定模式,您将拥有一个package.lock.json文件,如下所示

"dependencies": {
    ".NETCoreApp,Version=v5.0": {
      "Newtonsoft.Json": {
        "type": "Direct",
        "requested": "[12.0.1, )",
        "resolved": "12.0.1",
        "contentHash": "pBR3wCgYWZGiaZDYP+HHYnalVnPJlpP1q55qvVb+adrDHmFMDc1NAKio61xTwftK3Pw5h7TZJPJEEVMd6ty8rg=="
      }
    }
  }

contentHash应该保护的包。

可以通过以下方式启用锁定模式

<PropertyGroup>
    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有公共示例应用程序gradle设置的私有源库

我可以调试带有源断点的nuget软件包,而不是介入其中吗?

docker build 中的 dotnet restore 不使用所有 nuget 源(忽略私有 github 源)

Java中没有源附件

node / nodemon中的typescript是否有源映射支持?

脚本中没有源的最后退出状态

我可以从未连接到PC的有源集线器为USB设备充电吗?

从私有nuget提要中删除外国nuget包

我可以在没有源文档的情况下重新打印过去的打印件吗?

Webpack使用先前构建步骤中的现有源映射

如何从Eclipse中的现有源创建项目,然后找到它?

具有源的DRF ModelSerializer CharField未出现在validated_data中

CMake-将子目录中的所有源添加到cmake项目

如何在没有源的情况下将断点放在类中?

一个makefile来编译指定目录中的所有源

如何在Windows Volume Mixer中同步所有源?

实体模型中可以使用私有设置器吗?

在vs代码中连接到Azure Devops私有NuGet

我可以发布私有的NuGet软件包吗?

Git子模块与包管理器的私有源

将Xamarin Forms中的CSS包含在WebView中,并带有源URL(iOS和Android)

如何在Debian中列出带有源URI,发行版和部分的已安装软件包?

在gdb中调试版本(无符号),但具有源构建文件夹(.o文件)?

在上下文菜单中选择“在终端中打开”时,为什么没有源.profile?

如何从大型文本文件中粘贴带有源值和目标值的“复制文件”?

使用私有设置器的 linq 可以实现吗?

访问Azure Functions中的私有Nuget服务器中托管的Nuget程序包

htaccess文件中可以有条件吗

Expressjs中可以有条件路由吗?