.net 为什么有必要添加PCL';将nuget包添加到应用程序项目中?
假设我有一个Visual Studio 2015解决方案,其中包含两个项目,.net 为什么有必要添加PCL';将nuget包添加到应用程序项目中?,.net,visual-studio-2015,nuget,portable-class-library,.net,Visual Studio 2015,Nuget,Portable Class Library,假设我有一个Visual Studio 2015解决方案,其中包含两个项目,MyApp(.NET)和MyLib(可移植--针对.NET 4.6和UWP 10)。它编译和运行良好 然后我将任何NuGet包添加到MyLib——可以是任何东西,但让我们选择Rx Main作为示例。我在使用Rx类型的MyLib类中添加了一行简单的代码 现在,MyApp将在启动时崩溃,并出现引用nuget包dll的FileNotFoundException。通过将相同的NuGet包添加到MyApp解决了这个问题 为什么还需
MyApp
(.NET)和MyLib
(可移植--针对.NET 4.6和UWP 10)。它编译和运行良好
然后我将任何NuGet包添加到MyLib
——可以是任何东西,但让我们选择Rx Main作为示例。我在使用Rx类型的MyLib
类中添加了一行简单的代码
现在,MyApp
将在启动时崩溃,并出现引用nuget包dll的FileNotFoundException。通过将相同的NuGet包添加到MyApp
解决了这个问题
为什么还需要将NuGet包添加到应用程序项目中?
如果MyLib
是一个普通的.NET项目,则不需要这样做
编辑
需要澄清一下
在标准.NET类库项目中,所有NuGet包都显示为引用下的单个DLL:
它们每个都有十几个可在“属性”窗口中编辑的属性,包括Copy Local
:
在PCL项目中,在引用下,NuGet包没有任何属性,也无法将它们复制到输出目录
这种情况至少有两个问题:
, . 正在执行的应用程序将始终需要能够找到引用的项目引用的程序集(只要使用它们的类型),无论这些引用是项目引用还是程序集引用(后者是否由NuGet管理,都无关紧要)。@CodeCaster,为什么这不是标准.NET库项目的要求?我意识到,对于这些,默认情况下,每个DLL都将其
Copy Local
属性设置为true
。。。但是那些蓝色图标NuGet包引用如何实现同样的效果呢?我不知道你在问什么。在运行时,运行时必须能够加载所有必需的程序集。这些是否打包在NuGet包的(依赖项)中并不重要。了解有关崩溃的更多信息,例如异常消息和调用堆栈。这可以说,你解决过这个问题吗?