在将aspnet 5从beta4升级到beta5之后,似乎无法构建类库项目

从aspnet beta4升级到beta5后,我有一个包含多个类库项目和一个Web应用程序的解决方案。 我遇到了各种各样的错误。 所以我开始用users / identity / ef创建一个新的Web应用程序项目。 我解决了将此项目升级到beta5的所有问题并且它可以正常工作。 然后我为该解决方案添加了一个新的类库项目,我得到了与其他更复杂的解决方案相同的错误。

dnvm列表:

Active Version Runtime Architecture Location Alias ------ ------- ------- ------------ -------- ----- 1.0.0-beta4 clr x64 C:\Users\Joe\.dnx\runtimes 1.0.0-beta4 clr x86 C:\Users\Joe\.dnx\runtimes 1.0.0-beta4 coreclr x64 C:\Users\Joe\.dnx\runtimes 1.0.0-beta4 coreclr x86 C:\Users\Joe\.dnx\runtimes 1.0.0-beta5 clr x64 C:\Users\Joe\.dnx\runtimes * 1.0.0-beta5 clr x86 C:\Users\Joe\.dnx\runtimes default 

我的解决方案有这个global.json:

 { "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-beta5" } 

我的类库有这个project.json

  { "version": "1.0.0-*", "description": "", "authors": [ "" ], "tags": [ "" ], "projectUrl": "", "licenseUrl": "", "dependencies": { "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta5", "System.Runtime": "4.0.20-beta-23019" }, "frameworks": { "dnx451": { }, "dnxcore50": { "dependencies": { "System.Collections": "4.0.10-beta-3019", "System.Linq": "4.0.0-beta-23019", "System.Threading": "4.0.10-beta-23019", "Microsoft.CSharp": "4.0.0-beta-23019" } } } } 

我在类库项目中有一个类文件:

 using Microsoft.Framework.Configuration; using System; namespace myapp.Configuration { public static class ConfigurationExtensions { public static string GetOrDefault(this IConfiguration config, string key, string defaultIfNotFound) { string result = config.Get(key); if (string.IsNullOrEmpty(result)) { return defaultIfNotFound; } return result; } public static int GetOrDefault(this IConfiguration config, string key, int defaultIfNotFound) { string result = config.Get(key); if (string.IsNullOrEmpty(result)) { return defaultIfNotFound; } return Convert.ToInt32(result); } public static bool GetOrDefault(this IConfiguration config, string key, bool defaultIfNotFound) { string result = config.Get(key); if (string.IsNullOrEmpty(result)) { return defaultIfNotFound; } return Convert.ToBoolean(result); } public static Guid GetOrDefault(this IConfiguration config, string key, Guid defaultIfNotFound) { string result = config.Get(key); if (string.IsNullOrEmpty(result)) { return defaultIfNotFound; } if (result.Length != 36) { return defaultIfNotFound; } return new Guid(result); } } } 

当我尝试构建时,我遇到了许多错误:

错误CS0518预定义类型’System.Void’未定义或导入ClassLibrary1.DNX 4.5.1错误CS0518预定义类型’System.Object’未定义或导入ClassLibrary1.DNX 4.5.1错误CS0518预定义类型’System.String’是未定义或导入的ClassLibrary1.DNX 4.5.1错误CS0433’mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’和’System.Runtime,Version = 4.0.20.0,Culture中都存在’Guid’类型=中立,PublicKeyToken = b03f5f7f11d50a3a’

任何想法如何解决这些错误

通过试验和错误更新这个最小类库我发现如果我从project.json中删除了System.Runtime的依赖项,那么这个简单的类库就会构建。

因此,为了澄清从beta4更新到beta5之后的问题,现在任何具有这些特定依赖项中的任何一个项目(可能还有其他但肯定是这些项目)将无法构建并将获得有关原始类型的这些错误。

 "System.Runtime": "4.0.20-beta-23019" "System.ComponentModel.Annotations": "4.0.10-beta-23019" "System.Xml.XmlDocument": "4.0.0-beta-23019" 

不幸的是,我确实需要其中一些来使我的代码工作

看起来像包依赖链中的某些东西很时髦

到目前为止,从beta4升级到beta5对我来说是一个彻底的火车残骸。 我希望也许有人知道如何解决这些问题,但如果我没有及时回复,我想我的下一步是尝试回到beta4并删除beta5

有没有其他人有幸将多项目解决方案从beta4迁移到beta5?

好吧,为了我的目的,我通过在每个项目中删除dnx451的目标,然后配置我的Web应用程序以使用特定的DNX版本1.0.0-beta5 .NET Core来解决构建问题。 我在每个项目的project.json中删除了“dnx451”:{},从框架部分,在web项目的属性中,我指定了要使用的DNX版本。

我怀疑是否存在某种包装故障导致我遇到的所有dnx451错误。

现在我的假设是,如果它在dnxcore50下运行,那么它将在稍后的dnx451 / desktop框架上运行。 这就是我认为dnxcore50是桌面框架的一个子集,现在我真的需要与我的应用程序一起工作。 我想我现在可以安全地放弃对桌面框架的支持,并在包装​​snafu清理后再添加回来。

通过在我的所有project.json文件中仅定位dnxcore50,我能够通过所有错误并构建并运行我的解决方案而不会出现错误。