所以最近我用.Net Standard 2.0替换了我的PCL(创建了一个新解决方案并取代了旧解决方案)。
以前(当项目是PCL时)我从项目中创建了一个nuget包并将其安装到我的Xamarin Forms项目中。 nuget包会自动下载nuspec中列出的依赖项,并将它们添加到相应项目的引用中(即正确的库将转到android项目或iOS项目中)。
使用.Net标准共享库,这似乎不再起作用,这是非常奇特的。 Nuget说它成功地将依赖项安装到项目中,但它不会将它们作为引用添加。
这是nuspec依赖关系部分
<dependencies>
<group targetFramework="MonoAndroid1.0">
<dependency id="Serilog.Sinks.Xamarin" version="0.1.29" />
<dependency id="Xamarin.Firebase.JobDispatcher" version="0.7.0-beta1" />
</group>
<group targetFramework="Xamarin.iOS1.0">
<dependency id="Serilog.Sinks.Xamarin" version="0.1.29" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="Serilog" version="2.6.0" />
<dependency id="Serilog.Sinks.File" version="4.0.0" />
<dependency id="Serilog.Sinks.Console" version="3.1.1" />
<dependency id="Newtonsoft.Json" version="10.0.3" />
</group>
</dependencies>
我的一部分想知道.Net Standard和Nuget是否存在某些问题,或者我的目标框架遇到了一个奇怪的问题?
答案 0 :(得分:1)
当您将NuGet包安装到sdk样式的.NET Standard 2.0项目中时,不会将任何引用直接添加到项目文件(.csproj)中。相反,只会添加一个PackageReference。 NuGet包中的程序集仍将在构建时使用,但不会直接添加到项目文件中。
NuGet也只会为安装的软件包添加单个PackageReference。与使用packages.config文件不同,它不会将所有依赖项添加到项目文件中,但它们将被隐式使用。
有关为项目解决了哪些程序集和依赖项的更多信息,请参阅在NuGet还原中生成的obj / project.assets.json文件。