1

注意:我在其他帖子中看到过这个错误,但问题是我看到的主要解决方案,显式定义框架而不是使用默认值,不起作用。

我的项目将 1.0.0-beta6 定义为 global.json 中的版本,据我所知,它没有使用任何不支持 beta6 的东西。我尝试使用框架“dnxcore50”和“dotnet”编译项目,但两者都不起作用(我的首选是 dotnet 以实现兼容性,但我会使用其中任何一个)。

这是我的project.json:

   {
  "version": "1.0.0-*",
  "description": "Cormaran Class Library",
  "authors": [ "Me" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "dependencies": {
    "Microsoft.CSharp": "4.0.0-beta-23019",
    "System.Net.Sockets": "4.0.10-beta-23123",
    "System.Text.Encoding": "4.0.10-beta-23019",
    "Newtonsoft.Json": "7.0.1",
    "System.Collections": "4.0.11-beta-23225"
  },

  "frameworks": {
    "dnxcore50": {

    }
  }
}

这是我的 global.json:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-beta6",
    "runtime": "clr",
    "architecture": "x86"
  }
}

现在,这可能不是静态的(但它可能会有所帮助),所以我将项目的 github 放在这里以供参考(如果您基于它做出任何陈述,我将在此处添加代码以防其他人遇到此问题) .

https://github.com/ThePlatinumTaco/Cormaran/tree/master/src/

4

1 回答 1

1

有多种因素可能导致此类问题。我花了一段时间才发现 VS/Nuget 有时会将依赖项放在真正应该放在 dnxcore50 特定依赖项中的主要依赖项部分。人们通过像您所做的那样从 project.json 中删除 dnx451 找到了解决这些错误的简单方法,但您不需要这样做。你只需要像这样移动依赖项:

{
  "version": "1.0.0-*",
  "description": "Cormaran Class Library",
  "authors": [ "Me" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "dependencies": {
    "Newtonsoft.Json": "7.0.1"
  },

  "frameworks": {
    "dnx451" : {
        "frameworkAssemblies": {
            "System.Xml": ""
         }
    },
   "dnxcore50": {
        "dependencies": {
            "Microsoft.CSharp": "4.0.0-beta-23019",
            "System.Net.Sockets": "4.0.10-beta-23019",
            "System.Text.Encoding": "4.0.10-beta-23019",
            "System.Collections": "4.0.10-beta-23019",
            "System.Xml.XDocument": "4.0.10-beta-23019"
        }

    }
  }
}

在“某些”情况下,您可能需要在 dnx451 下添加 frameworkAssemblies,它与 dnxcore50 下的一些依赖项相对应,例如,如果您还需要 dnxcore50 中的 System.Xml.XDocument,则需要使用 System.Xml。我补充说给你一个例子,除非你使用 xml 类,否则你的项目中可能不需要它。

您发布的另一个问题是版本不匹配,请注意我如何更正您发布的依赖项的版本以使它们保持在相同的 beta6 级别,而您发布的一些是更新的 beta7 版本,带有 -23225。这是令人困惑的,因为那些没有表明他们使用哪个测试版,但有对应关系。

其他要检查的内容是 wwwroot 文件夹中的 web.config 文件,该文件也可能包含有关使用哪个运行时的设置,然后右键单击项目并转到属性以查看项目是否配置为特定运行时。所有这些事情都必须同步。

同样在您的 global.json 中,您正在指定真正对应于 dnx451 的“clr”,而 dnxcore50 对应于“coreclr”

于 2015-09-16T17:28:49.210 回答