小编kko*_*ost的帖子

Nuget固定版本

我正在Visual Studio 2013中开发一个C#项目,我们开发了许多nuget包,以便在多个不同的应用程序中使用.我们遇到了一些nuget.org软件包,我们希望将其"固定"到旧版本,并将旧版本软件包的表达式集中在一起.

例如,我们与Unity 4或NUnit 3不兼容,因此我们希望坚持使用这些软件包的先前版本.

我不喜欢在packages.config中使用"allowedVersions",因为

  1. 它不是集中的(每个项目都必须输入)
  2. 在解决方案级别更新包的Visual中的GUI 忽略项目级别"allowedVersions"

我已经玩过在根级别nuget包中表达版本固定,该包具有带有依赖关系行的.nuspec

<dependency id="Unity" version="(,4.0)" />
<dependency id="NUnit" version="(,3.0)" />
Run Code Online (Sandbox Code Playgroud)

这似乎阻止了所有消费者进入不受支持的版本.我喜欢这个,因为它很简单,我可以告诉我的队友确保每个包都包含那个根级nuget包.

喜欢的一件事是这个root包的每个使用者都会得到他们不一定使用的包的引用.

例如,我发布的应用程序现在将引用NUnit,尽管根本不使用它.

有没有办法在Nuget中表达版本固定而不会获得这些不必要的依赖?

c# nuget visual-studio-2013

8
推荐指数
0
解决办法
745
查看次数

VS2019 c++ C3861 深度继承模板错误

我在 VS2019 中使用 /permissive- 编译时遇到 C3861 错误

class BaseClass
{
protected:
    void baseClassMethod()
    {
        m_value = 0;
    }

    int m_value;
};

template<typename T1>
class DerTmpl_1 : public BaseClass
{
public:
    T1 doTheThing(T1 t)
    {
        baseClassMethod();
        m_value = 123;
        return t;
    }
};

template<typename T1, typename T2>
class DerTmpl_2 : DerTmpl_1<T1>
{
public:
    T2 doTheOtherThing(T1 t1, T2 t2)
    {
        baseClassMethod();  // C3861 here, but only with /permissive-
        doTheThing(t1);     
        m_value = 456;      // C3861 here, but only with /permissive-
        return t2;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ c++17 visual-studio-2019

2
推荐指数
2
解决办法
625
查看次数

标签 统计

c# ×1

c++ ×1

c++17 ×1

nuget ×1

visual-studio-2013 ×1

visual-studio-2019 ×1