Nuget Dependencies未添加到项目中

时间:2017-12-15 04:16:21

标签: xamarin nuget portable-class-library .net-standard-2.0

所以最近我用.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是否存在某些问题,或者我的目标框架遇到了一个奇怪的问题?

1 个答案:

答案 0 :(得分:1)

当您将NuGet包安装到sdk样式的.NET Standard 2.0项目中时,不会将任何引用直接添加到项目文件(.csproj)中。相反,只会添加一个PackageReference。 NuGet包中的程序集仍将在构建时使用,但不会直接添加到项目文件中。

NuGet也只会为安装的软件包添加单个PackageReference。与使用packages.config文件不同,它不会将所有依赖项添加到项目文件中,但它们将被隐式使用。

有关为项目解决了哪些程序集和依赖项的更多信息,请参阅在NuGet还原中生成的obj / project.assets.json文件。