运行dnx rc2的MVC 6 ASP.NET 5本地化示例

5
我正在尝试运行AspNet5Localization示例项目,它位于https://github.com/damienbod/AspNet5Localization/tree/rc2。但是,当我打开该解决方案时,会出现一个警告框:
DNX SDC版本dnx-clr-win-x86.1.0.0-rc2-16444是您的解决方案所需的,但未安装在此计算机上。您要立即安装吗?如果选择“否”,则将使用“dnx-clr-win-x86.1.0.0-rc1-update1”作为本次会话的解决方案DNX SDK版本。
我选择了“是”。
然后又出现了另一个信息框:
DNX SDK版本dnx-clr-win-x86.1.0.0-rc2-16444安装失败。本次会话中,解决方案将使用DNX SDK版本dnx-clr-win-x86.1.0.0-rc1-update1。
因为我已经安装了dnx-clr-win-x86.1.0.0-rc2-16357,所以我从项目属性中更改了“解决方案DNX SDK版本”为1.0.0-rc2-16357。
Active Version           Runtime Architecture OperatingSystem Alias
------ -------           ------- ------------ --------------- -----
       1.0.0-rc1-update1 clr     x64          win
       1.0.0-rc1-update1 clr     x86          win             default
       1.0.0-rc1-update1 coreclr x64          win
       1.0.0-rc1-update1 coreclr x86          win
       1.0.0-rc2-16357   clr     x86          win

然而,尽管发生了这个更改,它仍未能恢复包。
我看到了以下错误:
System.ArgumentException: More than one runtime.json file has declared imports for 'win7-x86'
Parameter name: runtimeName
   at Microsoft.Dnx.Tooling.RestoreCommand.FindRuntimeDependencies(String runtimeName, List`1 runtimeFiles, Dictionary`2 effectiveRuntimeSpecs, HashSet`1 allRuntimeNames, Func`2 circularImport)
   at Microsoft.Dnx.Tooling.RestoreCommand.FindRuntimeDependencies(String runtimeName, List`1 runtimeFiles, Dictionary`2 effectiveRuntimeSpecs, HashSet`1 allRuntimeNames)
   at Microsoft.Dnx.Tooling.RestoreCommand.<RestoreForProject>d__69.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Dnx.Tooling.RestoreCommand.<>c__DisplayClass68_0.<<Execute>b__2>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Microsoft.Dnx.Tooling.RestoreCommand.<Execute>d__68.MoveNext()
----------
Restore failed
More than one runtime.json file has declared imports for 'win7-x86'

如何编译和运行这个示例项目?
1个回答

4

我该如何编译和运行这个示例项目?

。从命令行运行以下三个命令。这将升级我们的 dnvm 并添加最新的开发版本。请确保关闭反病毒软件;我的反病毒软件阻止了几个 .NET 文件。

set DNX_UNSTABLE_FEED=https://www.myget.org/F/aspnetcidev/api/v2
dnvm upgrade -unstable
dnvm install 1.0.0-rc2-16549 -runtime coreclr -unstable

第二步。打开AspNet5Localization/src/AspNet5Localization/project.json文件。添加以下依赖项。这将修复runtime.json错误。它通过提供运行时信息来解决.NETCore包的目标框架、平台和特定于运行时的实现。
 "Microsoft.NETCore.Platforms": "1.0.1-*"

第三步。打开AspNet5Localization/NuGet.config文件。确保asp.nuget.org和nuget.org的源未被注释掉。这些源为我们提供了Newtonsoft.Json、Remotion.Linq、Ix-Async和一些Microsoft.CodeAnalysis包。完成后,NuGet.config应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <!--To inherit the global NuGet package sources 
        remove the <clear/> line below -->
    <clear />
    <add key="MyGet aspnetcidev" 
         value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" />
    <add key="api.nuget.org" 
         value="https://api.nuget.org/v3/index.json" />
    <add key="nuget.org" 
         value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

此时,dnu restore 可以使用,但 dnu build 无法使用。

第四步。打开 AspNet5Localization/src/AspNet5Localization/Controllers/BoxesController.cs 文件。响应最近的重命名,通过查找和替换以下内容进行操作。

HttpNotFound --> NotFound
HttpBadRequest --> BadRequest

恢复并构建AspNet5Localization/src/Localization.SqlLocalizer项目。

$ cd src\Localization.SqlLocalizer
$ dnu restore
$ dnu build

恢复并构建“AspNet5Localization/src/AspNet5Localization”项目。
$ cd src\AspNet5Localization
$ dnu restore
$ dnu build
$ dnx web

您将看到以下结果。

enter image description here

注意01。这是在我的机器上运行dnvm list的样子:

Active Version           Runtime Architecture OperatingSystem Alias
------ -------           ------- ------------ --------------- -----
       1.0.0-rc1-update1 coreclr x64          win
       1.0.0-rc2-16549   clr     x86          win             default
  *    1.0.0-rc2-16549   coreclr x64          win

注意 02。在构建时,您将收到两个警告,即 Microsoft.Extensions.CodeGeneration 和 Microsoft.Extensions.CodeGenerators.Mvc 不支持 dnx451。要消除这些错误,请打开 project.json。删除这两个依赖项或删除 dnx451 框架。


1
Shaun,感谢您详尽的回答。我按照您的指示操作,但在执行“dnu restore”时遇到以下错误:“NotFound https://www.myget.org/F/aspnetcidev/api/v3/flatcontainer/remotion.linq/index.json Unable to locate Dependency Remotion.Linq >= 2.0.2”。似乎这里没有东西“https://www.myget.org/F/aspnetcidev/api/v3/flatcontainer/remotion.linq/index.json”,可能是出了什么问题吗? - feradz
啊哈。是的。这些都在我的NuGet本地缓存中。我们还需要一个步骤,我已经将其添加到我的答案中了。 - Shaun Luttin
@feradz 我还添加了另一步,即在构建 AspNet5Localization 项目之前先构建 Localization.SqlLocalizer - Shaun Luttin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接