bug*_*d87 12 f# compiler-errors nuget .net-core
在从F#库项目中定位.NET Core时,我在某些NuGet包(例如Newtonsoft.Json和Microsoft.EntityFrameworkCore.SqlServer)中打开命名空间时遇到了一些麻烦.
以下是导致我的问题的步骤:
从https://www.microsoft.com/net/core#windows安装"Visual Studio 2015 Update 3"和".NET Core 1.0.1 - VS 2015 Tooling Preview 2"
创建了一个包含以下内容的空解决方案:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Run Code Online (Sandbox Code Playgroud)在解决方案目录中创建一个空项目目录
在空项目目录中,运行命令:
dotnet new -t lib --lang f#
Run Code Online (Sandbox Code Playgroud)
它创建了一个Library.fs文件:
namespace Library
module Say =
let hello name =
printfn "Hello %s" name
Run Code Online (Sandbox Code Playgroud)
和project.json文件:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"compilerName": "fsc",
"compile": {
"includeFiles": [
"Library.fs"
]
}
},
"tools": {
"dotnet-compile-fsc":"1.0.0-preview2-*"
},
"frameworks": {
"netstandard1.6": {
"dependencies": {
"NETStandard.Library":"1.6.0",
"Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160629"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)将此现有项目添加到我的解决方案中,并且包还原工作正常
但是,NuGet Package Manager UI无法打开,因为
"dotnet-compile-fsc":"1.0.0-preview2-*"
Run Code Online (Sandbox Code Playgroud)
来自project.json文件"不是有效的版本字符串"
跑完命令
dotnet -version
Run Code Online (Sandbox Code Playgroud)
并用实际版本"1.0.0-preview2-003131"替换"无效版本"
然后,NuGet Package Manager UI正确打开并显示以下已安装的软件包:
安装了Newtonsoft.Json v9.0.1软件包,它将以下内容添加到project.json文件的根目录:
"dependencies": {
"Newtonsoft.Json": "9.0.1"
}
Run Code Online (Sandbox Code Playgroud)在Library.fs文件中添加了以下行:
open System
open Newtonsoft.Json
Run Code Online (Sandbox Code Playgroud)
但编译器给我错误"命名空间或模块'Newtonsoft'未定义"
使用Visual Studio 2015中创建Class1.cs文件的模板在同一解决方案中创建了一个新的Visual C#.NET核类库项目:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace example2
{
public class Class1
{
public Class1()
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
和project.json文件:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
Run Code Online (Sandbox Code Playgroud)将Newtonsoft.Json v9.0.1软件包安装到C#项目中,该项目更新了project.json文件中的依赖项:
"dependencies": {
"NETStandard.Library": "1.6.0",
"Newtonsoft.Json": "9.0.1"
}
Run Code Online (Sandbox Code Playgroud)将以下行添加到Class1.cs文件中:
using Newtonsoft.Json;
Run Code Online (Sandbox Code Playgroud)
并且没有编译器问题
我对Microsoft.EntityFrameworkCore.SqlServer NuGet包有同样的问题.
任何人都可以解释我在F#项目中做错了什么阻止我使用这些包?
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |