设置如下:
IDE是Visual Studio 2017的最新版本。
如果您在手机上构建和部署该应用程序,则一切正常。 但是,如果您尝试从测试项目运行测试,则会显示找不到Newtonsoft库。
我什至设法找到了一种原因:构建库时,它的依赖关系没有打包在内部,也没有复制到构建目录中。 当为手机构建.apk时,依赖关系就被打包了。 但是,当NUnit项目自行构建时,它仅占用了库,并且在任何地方都找不到依赖关系。 但是,没有接口可以控制NuGet“包装参考”类型依赖项的行为(蓝色),属性窗口对它们而言是空的。而且我发现没有办法将NuGet软件包作为“ .config”类型的依赖项(灰色)添加到此类项目。
有一个解决方法-您可以将Newtonsoft软件包添加到NUnit测试项目中,然后将其复制到build目录中,并且Android库可以使用它,但是我觉得不合适。测试不需要该参考,并且该项目中没有业务。
答案 0 :(得分:0)
如何控制Android类库中的NuGet包?
您的解决方法是正确的解决方案,您不必为此担心太多。
这是因为Newtonsoft包未在您的NUnit测试项目中直接使用,因此Visual Studio / MSBuild不知道您的测试项目是否需要此Newtonsoft库。为了避免NUnit测试项目中的引用污染,Visual Studio / MSBuild尝试仅将引用引入到它检测为项目Xamarin.Android
应用程序所需的NUnit测试项目中。
因此,要解决此问题,我们通常将Newtonsoft添加到测试项目中,或给予复制任务以将其复制到测试项目中。
有关更多详细信息,请参见This Thread。
答案 1 :(得分:0)
寻找另一个问题的答案,我现在发现信息,描述的行为是一个已知问题,由.NET开发人员在此处描述: https://github.com/dotnet/standard/issues/481