- создал новый проект
Class Library (Package)
- изменивших
project.json
выглядеть следующим образом (добавлено зависимости проекта):
project.jsonТип «DateTime» определен в сборке, на которую не ссылаются?
{
"version": "1.0.0-*",
"description": "WMI.ECM.PCMS.Services.Acomba Class Library",
"authors": [ "WILL" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"Acomba.SDK": "2.0.0",
"WMI.ECM.Inventory.Models": "",
"WMI.ECM.Inventory.Services": "",
"WMI.ECM.Inventory.Services.Contracts": ""
},
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
}
}
}
- Составитель решения, и Я получаю эту ошибку:
The type 'DateTime' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PunlicKeyToken=b77a5c561934e089'.
- Тем не менее, я не имею эту проблему с другими моими проектами, которые также предназначаться DNX451 и DNXCORE50. Также я должен упомянуть, что
mscorlib.dll
на самом деле ссылается в рассматриваемом проекте на этот скриншот:Referenced assemblies
.
В результате я сделал несколько поисков, которые в конечном итоге не понятны.
Я пытался добавить зависимости к dnx451 {} в моем project.json так:
"dnx451": {
"dependencies": {
"Microsoft.CSharp": "",
"System.Runtime": ""
...
}
}
Потому что я помню, прочитав такое решение где-то, и это не сработало.
Большинство ответов предназначены для более старой версии веб-проекта, решить эту проблему путем добавления ссылки в
web.config
. Ну,Class Library (Package)
не имеетweb.config
.я скачал и установил этот патч:
Microsoft .NET Framework 4.5.2 Developer Pack
, что ничего не изменилось.И еще один, который я едва могу понять, что обсуждается, потому что они говорят о фасадах для каждой версии фреймворка или что-то в этом роде.
Это выглядит как общая проблема, хотя я не могу найти полезные решения актуальной проблемы.
В настоящее время с помощью
- Visual Studio Community 2015 - Версия 14.0.25123.00 Update 2
- .NET Framework 4.6.01055
- ASP.NET MVC 6 Установленные
- SideWaffle для XUnit DNX Test Unit Шаблон проекта
- Visual C# 2015
UPDATE
Это, как представляется, быть вызвано библиотекой COM, которая Я импортировал этот инструмент из строки VS CMD: Tlbimp.exe (Type Library Importer)
.
Одним словом, AcoSDK.dll представляет собой библиотеку COM, которую я импортировал с использованием вышеупомянутого инструмента, чтобы создать сборку .NET со всеми типами COM, разрешенными как типы .NET.
Затем я использовал NuGet.exe
, чтобы создать пакет, который я опубликовал через свой личный канал.
И тогда я назвал пакет в своем проекте "Acomba.SDK": "2.0.0"
в моем project.json
.
Всякий раз, когда я использую свойство DateTime из этого пакета, возникает ошибка сборки. Например, это приводит к возникновению ошибки:
public DateTime CreatedAt { get { return p.PrTimeModified; } }
И это не делает:
public DateTime CreatedAt { get { return new DateTime(); } }
Тип COM для .NET DateTime Дата. Тем не менее, он должен рассматриваться как DateTime, следуя шагам в примерах, приведенных в командной строке tlbimp.exe
.
Только когда я добавил точку в свойство, что увидел, что DateTime не поддерживается в DNXCORE50. За исключением того, что это для родного DateTime, такого как «new DateTime()» (see screenshot here
).
Любые подсказки относительно того, как обходить это?
Почему вы это делаете?Таргетинг CoreCLR/CoreFx полезен для запуска вашего кода на Linux или OSX. Этот компонент COM никогда не будет. –
@ HansPassant: Почему бы и нет? Я имею в виду, однажды упакованный в сборку типа .NET импортированного типа, опубликованную как пакет NuGet, а затем ссылаясь на использование соответствующих пакетов совместимости, что помешало бы этому COM работать на другой ОС? Кроме того, я все еще нахожусь здесь на моей кривой обучения. знак равно –