У меня возникают проблемы с открытием пространств имен в некоторых пакетах NuGet (например, Newtonsoft.Json и Microsoft.EntityFrameworkCore.SqlServer) при настройке .NET Core из проекта библиотеки F #.
Ниже приведены шаги, которые приводят к моей проблеме:
-
Установлен "Обновление Visual Studio 2015 3" и ".NET Core 1.0.1 - VS 2015 Tooling Preview 2" из https://www.microsoft.com/net/core#windows
-
Создано пустое решение со следующим содержимым:
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
-
Создан пустой каталог проекта в каталоге решений
-
В пустом каталоге проекта выполняется команда:
dotnet new -t lib --lang f#
который создал файл Library.fs:
namespace Library module Say = let hello name = printfn "Hello %s" name
и файл 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" } } } }
-
Добавил этот существующий проект в мое решение, и восстановление пакета работало нормально
-
Пользовательский интерфейс NuGet Package Manager не смог открыть, поскольку
"dotnet-compile-fsc":"1.0.0-preview2-*"
из файла project.json был "недействительной версией строки"
-
Выполните команду
dotnet -version
и заменил "неверную версию" на фактическую версию "1.0.0-preview2-003131"
-
Пользовательский интерфейс диспетчера пакетов NuGet затем правильно открыл и отобразил следующие установленные пакеты:
- dotnet-compile-fsc v1.0.0-preview2-003131
- Microsoft.FSharp.Core.netcore v1.0.0-alpha-160629
- NETStandard.Library v1.6.0
-
Установлен пакет Newtonsoft.Json v9.0.1, который добавил в корень файла project.json следующее:
"dependencies": { "Newtonsoft.Json": "9.0.1" }
-
В файл Library.fs добавлены следующие строки:
open System open Newtonsoft.Json
но компилятор дает мне ошибку "пространство имен или модуль" Newtonsoft "не определено"
-
Создал новый проект библиотеки Visual С#.NET Core Class в том же решении, используя шаблон в Visual Studio 2015, который создал файл Class1.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace example2 { public class Class1 { public Class1() { } } }
и файл project.json:
{ "version": "1.0.0-*", "dependencies": { "NETStandard.Library": "1.6.0" }, "frameworks": { "netstandard1.6": { "imports": "dnxcore50" } } }
-
Установлен пакет Newtonsoft.Json v9.0.1 в проект С#, который обновил зависимости в файле project.json:
"dependencies": { "NETStandard.Library": "1.6.0", "Newtonsoft.Json": "9.0.1" }
-
В файл Class1.cs добавлена следующая строка:
using Newtonsoft.Json;
и не было проблем с компилятором
У меня такая же проблема с пакетом Microsoft.EntityFrameworkCore.SqlServer NuGet.
Может кто-нибудь объяснить, что я делаю неправильно в проекте F #, который мешает мне использовать эти пакеты?