Импортируемый тип определяется несколько раз - только в xbuild на Mono 2.10.1 - PullRequest
2 голосов
/ 21 марта 2011

Возникла проблема, из-за которой при компиляции некоторого кода, использующего HttpContextBase, возникает ошибка компиляции:

UserService.cs(13,26): error CS0433: The imported type `System.Web.HttpContextBase' is defined multiple times

Оскорбительная строка:

private readonly HttpContextBase httpContext;

Если я уберу эту строку кода или прокомментирую ее, ошибка исчезнет, ​​и сборка будет скомпилирована.

В другом проекте (тестовом проекте для этого) такая же ошибка возникает при попытке объявить HttpContextBase для передачи конструктору этого объекта. Похоже, что это межпроектная проблема.

Это проблема файла проекта? (Не могу найти более одной ссылки на System.Web там). Он компилировался до того, как я внес некоторые изменения в шаг AfterBuild, поэтому я обеспокоен тем, что что-то напутало в файле csproj.

Это сборка с Mono 2.10.1, использующая сборку сборки ствола monodevelop для использования xbuild для компиляции.

Компиляция с использованием поведения сборки Monodevelop по умолчанию не приводит к этой ошибке.

Ответы [ 2 ]

6 голосов
/ 28 марта 2011

Тип System.Web.HttpContextBase был определен в System.Web.Abstractions.dll в .NET 3.5 SP1, но в System.Web.dll в .NET 4.0. Это означает, что скомпилированные dll со ссылками на тип в System.Web.Abstractions.dll будут «перенаправлены на тип» в System.Web.dll.

Похоже, у вас есть локальная копия System.Web.Abstractions.dll в /Users/shimms/Development/convergence/lib/System.Web.Abstractions.dll, вероятно, версии .NET 3.5, которая может конфликтовать с 4.0 System.Web.dll.

1 голос
/ 27 января 2017

Эта проблема возникает, когда вы ссылаетесь на тип, определенный в нескольких классах. Чтобы исправить это, вы можете отредактировать вашу ссылку и снять галочку с одной из DLL, которая вызывает проблему.

При наведении указателя мыши на ошибку в Visual Studio / Xamarin будет отображаться имя нескольких ссылок, в которых существует этот тип. Просто отметьте и включите только одну ссылку или класс.

Ниже приведен скриншот для справки.

enter image description here

После устранения проблемы:

enter image description here

...