2016-10-31 3 views
3

У меня есть приложение с ядром dotnet, над которым я работаю, это кросс-платформенный. Я хотел использовать Нода в качестве утилиты в моем проекте, но получаю следующее сообщение об ошибке, даже Тхо я nodatime определяется как зависимость в моем проекте:Совместим ли NodaTime с NetCoreApp 1.0?

System.IO.FileNotFoundException: Could not load file or assembly 'NodaTimestrong text, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4226afe0d9b296d1'. The system cannot find the file specified. 
     File name: 'NodaTime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4226afe0d9b296d1' 
     at project.ef.CalendarHelper.ValidateTimeZone(String timezoneTypeName) 
     at project.ef.CalendarHelper. 

Здесь находятся проект конфигурационные файлы:

API ПРОЕКТ

{ 
    "buildOptions": { 
    "preserveCompilationContext": true, 
    "emitEntryPoint": true, 
    "warningsAsErrors": true, 
    "debugType": "portable", 
    "copyToOutput": { 
     "include": [ 
     "config.json", 
     "Certificate.pfx" 
     ] 
    } 
    }, 
    "dependencies": { 
    "AspNet.Security.OAuth.Introspection": "1.0.0-alpha2-final", 
    "AspNet.Security.OAuth.Validation": "1.0.0-alpha2-final", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Mvc.Formatters.Json": "1.0.0", 
    "Microsoft.AspNetCore.Mvc.Cors": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Design": { 
     "type": "build", 
     "version": "1.0.0-preview2-final" 
    }, 
    "Microsoft.NETCore.App": "1.0.0", 
    "project.ef": "1.0.0-*" 
    }, 
    "tools": { 
     "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ "portable-dnxcore50+net45+win8+wp8+wpa81" ] 
    } 
    }, 
    "publishOptions": { 
    "include": [ 
     "config.json" 
    ] 
    }, 
    "runtimes": { 
     "win10-x64": {}, 
     "osx.10.11-x64": {}, 
     "ubuntu.14.04-x64": {} 
    } 
} 

EF PROJECT

{ 
    "dependencies": { 
    "NETStandard.Library": "1.6.0", 
    "Npgsql.EntityFrameworkCore.PostgreSQL": "1.0.1", 
    "Npgsql.EntityFrameworkCore.PostgreSQL.Design": "1.0.1",  
    "project.Internal.ERP": "1.1.0-*", 
    "project.models": "1.0.0-*", 
    "NodaTime": "2.0.0-alpha-*" 
    }, 
    "frameworks": { 
    "netstandard1.6": { 
     "imports": [ 
     "dnxcore50", 
     "portable-net451+win8" 
     ] 
    } 
    } 
} 
+0

Как выглядит ваша зависимость? 2.0.0-alpha20160729 должно быть в порядке с netcoreapp1.0 без импорта. –

+0

Кажется, что: https://www.nuget.org/packages/NodaTime/2.0.0-alpha20160729 - цели netstandard1.1, поэтому все должно быть в порядке. Можете ли вы показать свой проект.json? Я просмотрел содержимое пакета, и он не содержит сборку NodaTimestrong только NodaTime. – Pawel

+0

Я пересмотрел свой вопрос, чтобы включить более подробную информацию. У меня есть два project.json's - один для api и другой для моей логики базы данных. Есть ли где-то образец проекта ядра dotnet, который я могу перекрещивать ссылку? @JonSkeet Я вижу в вашем примере ниже, что ваши ссылки 1.0.1 и im ссылаются на 1.0.0, возможно, там что-то есть. Я использую NodaTime для репликации решения этого вопроса. Http://stackoverflow.com/questions/17348807/how-to-translate-between-windows-and-iana-time-zones – chris

ответ

4

Noda Time 1.x только цели PCL. You может быть в состоянии заставить его работать с netcoreapp1.0, но я не собираюсь это гарантировать.

Но Noda Time 2.0 цели netstandard1.1, так что должно быть хорошо. Это возможно только в качестве альфа-версии прямо сейчас, но он отлично работает:

project.json содержание:

{ 
    "buildOptions": { 
    "emitEntryPoint": true 
    }, 
    "dependencies": { 
    "NodaTime": "2.0.0-alpha20160729" 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.1" 
     } 
     } 
    } 
    } 
} 

Program.cs содержание:

using System; 
using NodaTime; 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     Console.WriteLine(SystemClock.Instance.GetCurrentInstant()); 
    } 
} 

Это работает без проблем.

+0

выясняет, что явное определение номера версии для проблемы с nodatime разрешило мою проблему. иногда это самое простое решение ха-ха - спасибо! – chris

+0

@chris: Возможно, вы захотите посмотреть, какую версию он ранее собирал - если вы посмотрите на 'project.lock.json', вы можете увидеть точные разрешенные зависимости. –

+0

oh wow - я посмотрел в кеш-память и раньше использовал NodaTime.2.0.0-alpha20140807.nupkg. Это может объяснить это хаха – chris

 Смежные вопросы

  • Нет связанных вопросов^_^