Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
107 / 65 / 0
Регистрация: 20.08.2013
Сообщений: 321
1

Как в Visual Studio в проекте .NET CORE 2.0 разрулить трабл одинаковых имён в сборках

21.08.2017, 17:35. Показов 2806. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вобщем обновился сегодня до core 2.0 и вылезла нетипичная проблема которая взорвала мне мозг.

Вобщем использую я сборку CoreCompat.System.Drawing.dll. Вот -> https://github.com/CoreCompat/CoreCompat

В ней есть NameSpace -> namespace System.Drawing в котором лежит struct Color.

Этот сборка использует сборку System.Drawing.Primitives.dll - которая после обновления так же стала содержать namespace System.Drawing в котором лежит Color.

В моём коде произошёл конфликт. Компилятор просто ругается:

Ошибка Z:\Project\Autonomic\Captcha\Captcha.cs Тип "Color" существует как в "CoreCompat.System.Drawing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c0a7ed9c2333b592", так и в "System.Drawing.Primitives, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Короче погуглив - нашёл способ вроде как разрулить. Смысл состоит в том что бы в файле написать следующее:

extern alias TypeColorConflicts;

тогда можно будет обращаться примерно так TypeColorConflicts.Color

Но компилятору нужно указать параметр /reference:TypeColorConflicts=CoreCompat.System.Drawing.dll - т.е. привязать к ссылке dll

И вот где это с делать в C# CORE я изыскался но так и не нашёл. Даже встречал на форумах туманное утверждение что мол этого с CORE нету. Теоретически я могу вызывать компилятор напямую - но имея Студию это есть БРЕД.

Прошу помощи так как мозг уже кипит.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2017, 17:35
Ответы с готовыми решениями:

Отсутствует возможность добавления Модель данных ADO NET EDM в Visual Studio в проекте net core
Создал новый проект веб-приложение на net core . В Nu get добавил Entity Framework 6.2,...

Как открыть файлы в формате visual studio .net 2003 в visual studio net 2002?
Возможно ли открыть файлы в формате visual studio .net 2003 в visual studio .net 2002 ?? Илт...

Net Core 1.0 в Visual Studio 2019
Приветствую, ребята. Подскажите пожалуйста, как в VS-2019 создать ASP Net Core 1.0 приложение ?...

Установка Net Core на Visual Studio 2015
Приветствую, ребята! Подскажите пожалуйста, какие пакеты нужно установить в VS-2015 чтобы можно...

8
Эксперт .NET
12502 / 8687 / 1310
Регистрация: 21.01.2016
Сообщений: 32,633
21.08.2017, 17:57 2
developer123, решение простое: в коде, где используются оба класса из конфликтующих пространств имён, использовать полные имена конфликтующих типов.
0
107 / 65 / 0
Регистрация: 20.08.2013
Сообщений: 321
21.08.2017, 18:03  [ТС] 3
Ну есле бы было всё так просто то...

Короче полное имя нужного класса будет System.Drawing.Color

Имя класса паразита System.Drawing.Color

Сходства не замечаете?

Я уже впереди использовал всё что только мог. Ничего не работает. И да Intelesence из вижлы правильно переходит в сборку CoreCompat.System.Drawing.dll есле кликнуть перейти к определению

А вот компилятор ругается - говорит что он не знает что именно использовать. Собственно я всё выше описал.

Кстати есть ещё типо Drawing модернизированный под CORE 2.0 вот https://github.com/CoreCompat/CoreCompat

Я скачал проект - и он оказался каким то недоделанным. Не компилируются и путой он весь. В общем как всегда с проектами с githab. Почем у люди выкидывают туда вещи которые просто не работают по умолчанию?
0
Эксперт .NET
12502 / 8687 / 1310
Регистрация: 21.01.2016
Сообщений: 32,633
21.08.2017, 18:06 4
developer123, что-то одно из этого нужно завернуть в класс-обёртку (скорее всего в виде фабрики).

Добавлено через 58 секунд
Т.е. речь от стороннем классе, который "видит" только один "конфликтный" тип.
0
107 / 65 / 0
Регистрация: 20.08.2013
Сообщений: 321
21.08.2017, 18:52  [ТС] 5
Скажем так - CoreCompat.System.Drawing.dll - сторонний клас который использует сторонний клас который входит в .NET CORE, а именно System.Drawing.Primitives.dll

Исходников у меня нету нормальных поэтому изменить не могу.

Я вызываю функцию из сбоки CoreCompat.System.Drawing.dll которая принимает параметр System.Drawing.Color

Так вот параметр я не могу передать - потому как компилятор ругается.

Собственно вот пример:

HatchBrush hatchBrush = new HatchBrush(HatchStyle.ZigZag, Color.Black, Color.FromArgb(55, 55, 55));
HatchBrush - находится в CoreCompat.System.Drawing.dll. В этом примере Я не могу передать Color.
0
Эксперт .NET
6508 / 4085 / 1605
Регистрация: 09.05.2015
Сообщений: 9,551
21.08.2017, 20:24 6
Незнаю что вы там и как делаете, но я создал новый проект .NET Core 2.0, вставил туда ваш код
C#
1
HatchBrush hatchBrush = new HatchBrush(HatchStyle.ZigZag, Color.Black, Color.FromArgb(55, 55, 55));
и добавил соответствующий пакет CoreCompat.System.Drawing.v2 с nuget и все компилится без ошибок...
0
107 / 65 / 0
Регистрация: 20.08.2013
Сообщений: 321
21.08.2017, 20:50  [ТС] 7
Не знаю как у вас, но у меня визуал упорно не видела CoreCompat.System.Drawing.v2 (эту версию я нашёл через поиск) , а предлагало старую сборку (1.0.0.0.6 beta)с которой и есть проблема. Ладно мы не гордые - я ему через консоль указал адрес.Но CoreCompat.System.Drawing.v2 у меня не хочет ставится - если ломается то ломается всё и сразу.
вот лог:

PM> Install-Package CoreCompat.System.Drawing.v2 -Version 5.2.0-preview1-r131
GET https://api.nuget.org/v3/regis... index.json
OK https://api.nuget.org/v3/regis... index.json 730*мс
Идет восстановление пакетов для D:
latcontainer/system.security.principal.windows/index.json[/url]
OK https://api.nuget.org/v3-flatc... index.json 722*мс
GET https://api.nuget.org/v3-flatc... 5-02.nupkg
OK https://api.nuget.org/v3-flatc... 5-02.nupkg 500*мс
Идет установка System.Security.Principal.Windows 4.4.0-preview1-25305-02.
Install-Package : Процесс не может получить доступ к файлу "dh4ib0or.bca", так как этот файл используется другим процессом.
строка:1 знак:1
+ Install-Package CoreCompat.System.Drawing.v2 -Version 5.2.0-preview1- ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ( [Install-Package], Exception
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallP ackageCommand
0
Эксперт .NET
6508 / 4085 / 1605
Регистрация: 09.05.2015
Сообщений: 9,551
21.08.2017, 20:54 8
Цитата Сообщение от developer123 Посмотреть сообщение
Процесс не может получить доступ к файлу "dh4ib0or.bca", так как этот файл используется другим процессом.
Попробуйте перезапустить VS, если не поможет, перезагрузить комп,
0
107 / 65 / 0
Регистрация: 20.08.2013
Сообщений: 321
21.08.2017, 21:39  [ТС] 9
Ууххх! Я почувствовал себя как в Linux! Обычно там такие танцы с бубном с океаном библиотек. Короче чёртов файл который лежал в недрах nuget не хотел удалятся даже в безопасном режиме. Бля в Win10 войти в безопасный режим это нечто ))) Этот файл открывала сама система. Удалось только 2-ым скаченным унлокером его грохнуть. Первый не справился с задачей.
Короче поставил этот злосчастный пакет. Всё заработало.
0
21.08.2017, 21:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2017, 21:39
Помогаю со студенческими работами здесь

Определить версию .NET Core SDK, поддерживаемую Visual Studio Code
Добрый день! Как определить, с какими версиями .NET Core SDK совместима конкретная версия Visual...

Использование Visual Studio Code для разработки ASP.NET Core на х86 ОС
Мне надо переделать проэкт web api c .net framework на asp.net core. Хочу использовать для этого...

Можно ли использовать сборку из .NET Core в обычном ASP .NET проекте ?
Microsoft.Extensions.Logging очень удобная штука, в обычном .NET её никак нельзя задействовать ?...

Объединить .net core и .net framework в одном проекте
Всем привет, требуется объединить .net core 3.0 (wpf) и .net framework (В идеале: 4.5.2 , но можно...

Окно со свойствами в проекте MFC, как в Visual Studio
Мне нужно окошечко свойств как в VisualStudio. Обязательно на MFC. Для этого я создал проект SDI со...

Как сделать, чтобы js файлы обновлялись в проекте visual studio?
Добрый день Подскажите пожалуйста как сделать чтобы обновлялось содержимое js файлов в проекте...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru