Проблема с переносом проекта VB.Net с VS 2010 на VS 2017

У нас есть проект 15-летней давности, который мы хотим перенести с Visual Studio 2010 на Visual Studio 2017. Проект отлично компилируется в VS 2010, но когда мы попытались перенести его на VS 2017, мы получили множество ошибок.

По сути, у нас есть Businesslayer с классом Security:

<Serializable()> Public MustInherit Class Security
  Public Function GetPermission() As Boolean
  End Function
End Class

Затем у нас есть Domainlayer с кучей классов, которые используют Security:

<Serializable()> Public NotInheritable Class DomainClass
  Inherits BLL.Security
    Shadows Function GetPermission() As Boolean
    End Function
End Class

И, наконец, у нас есть проект Asp.Net, использующий функцию DomainClass:

Public Class PresentationLayerClass
   Private m_Domain As Domains.DomainClass
   m_Domain = new Domain.DomainClass()
   m_Domain.GetPermission()
End Class

Очевидно, что у проекта Asp.net есть ссылка на домен, а у домена есть ссылка на Businesslayer. Когда мы компилируем это в VS 2017, мы получаем тысячи ошибок BC30653 на уровне представления:

BC30652 Reference required to assembly 'Business Logic Layer, Version=1.4.0.2, Culture=neutral, PublicKeyToken=null' containing the type 'Security'. Add one to your project.

Как решить эту проблему? Мы не хотим добавлять ссылку на Businesslayer в слой Asp.net. А почему в VS 2017 все по-другому?

[Edit:] Вещи, которые я пробовал:

  • Очистить и восстановить
  • Изменение ссылок на DLL вместо проектов
  • Я получаю ту же ошибку в новом решении с приведенным выше кодом, поэтому он не является специфическим для нашего решения.

Из небольшого чтения, которое я сделал по этому коду ошибки, это происходит в проекте VB, который ссылается на другой проект, но не в C# и не в VB, если вы ссылаетесь на DLL. Похоже, это может быть ошибка, и решение проблемы - ссылаться на скомпилированный вывод, а не на проект. Не идеально, но может потребоваться.

jmcilhinney 29.11.2018 13:15

Я попытался изменить ссылку на домены и ссылку BusinessLayer на DLL: s, но это не сработало. Спасибо за предложение.

Hultan 29.11.2018 13:28

Я просто хочу добавить, что я пробовал очистить и перестроить в меню «Сборка», и это тоже не помогло.

Hultan 29.11.2018 13:33

И что я попытался воссоздать проблему в небольшом тестовом решении в VS 2017 с тремя проектами выше и в основном с приведенным выше кодом, и я получаю там ту же ошибку, поэтому она не является специфической для нашего решения.

Hultan 29.11.2018 13:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
219
1

Ответы 1

Думаю, я нашел ответ на свой вопрос в этой ветке:

Почему VS 2015 нужна ссылка на System.Data.Entity, а VS 2013 - нет?

Похоже, это связано с тем, как новый компилятор в VS 2015 обрабатывает транзитивные ссылки. Так что мне просто нужно будет добавить ссылку, которую он запрашивает.

Другие вопросы по теме