我正在Visual Studio 2013中开发一个C#项目,我们开发了许多nuget包,以便在多个不同的应用程序中使用.我们遇到了一些nuget.org软件包,我们希望将其"固定"到旧版本,并将旧版本软件包的表达式集中在一起.
例如,我们与Unity 4或NUnit 3不兼容,因此我们希望坚持使用这些软件包的先前版本.
我不喜欢在packages.config中使用"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中表达版本固定而不会获得这些不必要的依赖?
我在 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)