将NuGet包添加到ASP.NET vNext项目时出错

将NuGet包添加到ASP.NET vNext项目时出错,nuget,dependency-management,asp.net-core,nuget-package-restore,Nuget,Dependency Management,Asp.net Core,Nuget Package Restore,我必须承认,我对ASP.NET vNext如何处理依赖项有点困惑。问题是,我想使用Microsoft Sync Framework和我在ASP.NET 5中实现的API。回到过去,我常常安装并引用适当的DLL。vNext似乎不是这样,因为它在依赖项方面都是包驱动的。因此,我在ASP.NET vNext项目中找到并添加了它作为依赖项: "dependencies": { "Microsoft.AspNet.Server.IIS": "1.0.0-beta1", "Microsoft

我必须承认,我对ASP.NET vNext如何处理依赖项有点困惑。问题是,我想使用Microsoft Sync Framework和我在ASP.NET 5中实现的API。回到过去,我常常安装并引用适当的DLL。vNext似乎不是这样,因为它在依赖项方面都是包驱动的。因此,我在ASP.NET vNext项目中找到并添加了它作为依赖项:

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
    "Microsoft.AspNet.Mvc": "6.0.0-beta1"
},
"frameworks": {
    "aspnet50": {
        "dependencies": {
            "Microsoft.SyncFramework": "2.1.0.2"
        }
    },
    "aspnetcore50": { }
}
当VS尝试还原包时,会出现以下错误:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Framework.Runtime.LibraryInformation..ctor(LibraryDescription description)
   at Microsoft.Framework.Runtime.LibraryManager.<>c__DisplayClass2.<GetLibraryInfoThunk>b__7(LibraryDescription library)
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at Microsoft.Framework.Runtime.LibraryManager.EnsureInitialized()
   at Microsoft.Framework.Runtime.LibraryManager.GetLibraryInformation(String name, String aspect)
   at Microsoft.Framework.Runtime.ProjectExportProviderHelper.GetExportsRecursive(ICache cache, ILibraryManager manager, ILibraryExportProvider libraryExportProvider, ILibraryKey target, Boolean dependenciesOnly)
   at Microsoft.Framework.Runtime.LibraryManager.<>c__DisplayClass0.<GetAllExports>b__1(CacheContext ctx)
   at Microsoft.Framework.Runtime.CacheExtensions.<>c__DisplayClass0`1.<Get>b__1(CacheContext ctx)
   at Microsoft.Framework.Runtime.Cache.CreateEntry(Object k, Func`2 acquire)
   at Microsoft.Framework.Runtime.Cache.<>c__DisplayClass3.<AddEntry>b__4()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at System.Lazy`1.get_Value()
   at Microsoft.Framework.Runtime.Cache.Get(Object key, Func`2 factory)
   at Microsoft.Framework.Runtime.CacheExtensions.Get[T](ICache cache, Object key, Func`2 factory)
   at Microsoft.Framework.Runtime.LibraryManager.GetAllExports(String name, String aspect)
   at Microsoft.Framework.Runtime.LibraryManager.GetAllExports(String name)
   at Microsoft.Framework.Runtime.ProjectMetadataProvider.GetProjectMetadata(String name)
   at Microsoft.Framework.DesignTimeHost.ApplicationContext.Initialize(String appPath, String configuration, Boolean triggerBuildOutputs)
   at Microsoft.Framework.DesignTimeHost.ApplicationContext.Calculate()
   at Microsoft.Framework.DesignTimeHost.ApplicationContext.DoProcessLoop()
   at Microsoft.Framework.DesignTimeHost.ApplicationContext.ProcessLoop(Object state)
System.NullReferenceException:对象引用未设置为对象的实例。
位于Microsoft.Framework.Runtime.LibraryInformation..ctor(LibraryDescription)
在Microsoft.Framework.Runtime.LibraryManager.c__DisplayClass2.b__7(LibraryDescription库)中
位于System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
在System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1源,Func`2键选择器,Func`2元素选择器,IEqualityComparer`1比较器)
在Microsoft.Framework.Runtime.LibraryManager.EnsureInitialized()上
位于Microsoft.Framework.Runtime.LibraryManager.GetLibraryInformation(字符串名称,字符串方面)
位于Microsoft.Framework.Runtime.ProjectExportProviderHelper.GetExportsRecursive(ICache缓存、ILibraryManager管理器、ILibraryExportProvider库导出提供程序、ILibraryKey目标、仅布尔依赖项)
在Microsoft.Framework.Runtime.LibraryManager.c__DisplayClass0.b__1(CacheContext ctx)中
在Microsoft.Framework.Runtime.CacheExtensions.c__显示类0`1.b__1(CacheContext ctx)
在Microsoft.Framework.Runtime.Cache.CreateEntry(对象k,Func`2)
在Microsoft.Framework.Runtime.Cache.c__DisplayClass3.b__4()中
在System.Lazy`1.CreateValue()处
在System.Lazy`1.LazyInitValue()处
在System.Lazy`1.get_Value()
在Microsoft.Framework.Runtime.Cache.Get(对象键,Func`2工厂)中
在Microsoft.Framework.Runtime.CacheExtensions.Get[T](ICache,对象键,Func`2工厂)
在Microsoft.Framework.Runtime.LibraryManager.GetAllExports(字符串名称,字符串方面)
位于Microsoft.Framework.Runtime.LibraryManager.GetAllExports(字符串名称)
位于Microsoft.Framework.Runtime.ProjectMetadataProvider.GetProjectMetadata(字符串名称)
在Microsoft.Framework.DesignTimeHost.ApplicationContext.Initialize(字符串appPath、字符串配置、布尔触发器BuildOutputs)
在Microsoft.Framework.DesignTimeHost.ApplicationContext.Calculate()中
在Microsoft.Framework.DesignTimeHost.ApplicationContext.DoProcessLoop()中
位于Microsoft.Framework.DesignTimeHost.ApplicationContext.ProcessLoop(对象状态)
因此,我没有把包裹包括在内


关于如何解决这个问题有什么想法吗?

显然ASP.NET vNext放弃了对在NuGet软件包中运行*.ps1脚本的支持

我还没有机会用vNext尝试我的同步框架NuGet软件包,因为我没有vNext环境。但是,我可以检查一下,您是否尝试过使用软件包管理器控制台“install package Microsoft.syncframework”安装软件包,并且您是否获得了与通过UI相同的结果?您是否尝试过在“dependencies”(依赖项)而不是框架下列出依赖项?i、 e:“依赖项”:{“Microsoft.AspNet.Server.IIS”:“1.0.0-beta1”,“Microsoft.AspNet.Diagnostics”:“1.0.0-beta1”,“Microsoft.AspNet.Mvc”:“6.0.0-beta1”,“Microsoft.SyncFramework”:“2.1.0.2”},@Darrell是的,我尝试了你提到的所有东西。部分问题是vNext不支持NuGet软件包中的*.msi(安装软件包时不运行ps1文件),我们是否应该为SyncFramework创建另一个只包含DLL(从.msi安装的)的软件包?嗯,那将是一个问题。我尝试创建一个只包含dll的包,但是如果同步框架msi没有安装到开发人员的计算机上,然后同步框架程序集将无法运行-因此,如果我们这样做了,我们还必须添加警告,即开发人员仍然需要在其机器上安装同步框架msi,否则这件事将无法工作。。包含msi的好处在于它为开发人员节省了额外的手动步骤。我想不出任何其他方法,因为您不能在vNext中引用DLL-依赖项只能通过NuGet处理。。