Предупреждение CS0436 неожиданно появляется при обновлении до VS2015

75
5

Я только что обновился от VS2013 до VS2015, и появилась тонна предупреждений CS0436, все, похоже, связаны с одной и той же проблемой.

Я медленно переношу веб-приложения с VB на С#, поэтому, возможно, это действительно просто. Я новичок в С#, поэтому, пожалуйста, используйте ответы непрофессионального типа...

Мое решение структурировано как таковое:

Проект 1 - Многоразовые методы (доступ к базе данных и т.д.)

\ CommonDataAccessFunctionality.vb

Namespace MyCompany
Public Class CommonDataAccessFunctionality
Public Sub New(ByVal storedProcedureToRun As String)
' db stuff here '
End Sub
End Class
End Namespace

Проект 2 - применимый к сети (С#) с зависимостью от Project 1

App_Code\DataAccess.cs

using System.Data;
using System.Data.SqlClient;

namespace QrCodes.App_Data
{
public abstract class QrDataCommon : MyCompany.CommonDataAccessFunctionality
{
public QrDataCommon(string storedProcedureToRun)
: base(storedProcedureToRun)
{

}
}

public class QrDataGrabber : QrDataCommon
{
public QrDataGrabber(string storedProcedureToRun)
: base(storedProcedureToRun)
{
}
}
}

Ошибка отображается в этой строке:

public class QrDataGrabber : QrDataCommon

Предупреждение CS0436
Тип "QrDataCommon" в "D:\Web\wwwroot\MyApp\MyApp-InProgress-Person WebApi\QrCodes\App_Code\DataAccess.cs" конфликтует с импортированным типом "QrDataCommon" в "QrCodes, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null '. Использование типа, определенного в 'D:\Web\wwwroot\MyApp\MyApp-InProgress-Person WebApi\QrCodes\App_Code\DataAccess.cs'.

Я прочитал много сообщений здесь о проекте, ссылающемся на себя, однако в диалоговом окне проекта нет ссылок (которые перечислены), только одна зависимость в проекте 2 к проекту 1. Кроме того, проект 2 не имеет элементов управления и т.д., которые ссылаются на что-то еще.

Может кто-нибудь, пожалуйста, дать мне некоторое руководство? Я не уверен, что это полезно, но в браузере объектов при поиске "QrDataCommon" я вижу следующее:

enter image description here

Обновление на основе помощи до сих пор

Если я решила просмотреть все файлы в обозревателе решений, в каталоге\bin\есть файл под названием QrCodes.dll, который создается при создании проекта/решения. Я также вижу то же самое в скрытой папке Debug.

Если я переименую класс QrDataCommon в нечто совершенно уникальное, скажем QrDataCommonTest123 и очистите/перестройте, ошибка немедленно QrDataCommonTest123, чтобы использовать новое имя класса.

Таким образом, возможно, это будет связано с целевым местоположением сборки приложения или чем-то еще?

спросил(а) 2015-10-06T12:55:00+03:00 5 лет, 6 месяцев назад
1
Решение
62

У вас есть 2 библиотеки DLL, использующие одно и то же имя класса QrDataCommon. Переименуйте один из них или не QrCodes.dll.

ответил(а) 2015-10-06T13:14:00+03:00 5 лет, 6 месяцев назад
76

Предупреждение CS0436 Тип "QrDataCommon" в "... DataAccess.cs" конфликтует с импортированным типом "QrDataCommon" в "...". Использование типа, определенного в '... DataAccess.cs'.

Большинство людей, вероятно, сталкиваются с этим из-за проектов, ссылающихся на себя (как вы указали); однако в вашем случае это потому, что ваш проект VB имеет тип с точно таким же пространством имен и именем - результатом выполнения прямого порта 1:1 от VB до С#.

Из-за того, что имя и пространство имен идентичны, С# имеет выбор: какой из них следует использовать? Он информирует вас о том, что он сделан наиболее логичным выбором и выбрал тот, который был выбран в вашем проекте С# - что, вероятно, вы так хотели.

Это ваши варианты:

ответил(а) 2015-10-06T13:15:00+03:00 5 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема