Il tipo importato è definito più volte - solo sotto XBuild su Mono 2.10.1
-
28-10-2019 - |
Domanda
Avere un problema in cui compilare un codice che si utilizzo HttpContextBase
sta lanciando l'errore di compilazione:
UserService.cs(13,26): error CS0433: The imported type `System.Web.HttpContextBase' is defined multiple times
La linea offensiva è:
private readonly HttpContextBase httpContext;
Se prendo quella riga di codice o lo commento, l'errore scompare e l'assemblaggio compila.
In un altro progetto (il progetto di test per questo) si verifica lo stesso errore quando si tenta di dichiarare a HttpContextBase
passare al costruttore di questo oggetto. Quindi sembra essere un problema incrociato.
È un problema di un file di progetto? (Non riesco a trovare più di un riferimento a System.Web
lì dentro). Si stava compilando prima di apportare alcune modifiche al AfterBuild
Passaggio, quindi sono preoccupato di aver incasinato qualcosa nel file CSPROJ.
Questo si sta costruendo con mono 2.10.1, utilizzando la build del tronco MonoDevelop per utilizzare XBuild per compilare.
La compilazione utilizzando il comportamento di build MonoDevelop predefinito non produce questo errore.
Soluzione
The type system.web.httpContextBase è stato definito in System.Web.Abstractions.dll in .NET 3.5 SP1, ma in System.web.dll in .NET 4.0. Ciò significa che le DLL compilate con riferimenti al tipo in System.Web.Abstractions.dll verrebbero "Tipo inoltrate" a System.web.dll.
Sembra che tu abbia una copia locale di System.web.abstractions.dll in /users/shimms/development/convergence/lib/system.web.abstractions.dll, probabilmente la versione .NET 3.5, che sarebbe in conflitto con il sistema 4.0. Web.dll.
Altri suggerimenti
Questo problema si verifica quando si fa riferimento a un tipo definito in più classi. Per risolvere questo problema puoi modificare il tuo riferimento e deselezionare uno dei DLL che sta causando il problema.
Quando si libra sull'errore in Visual Studio/Xamarin, visualizzerà il nome di riferimenti multipli in cui esiste questo tipo. Basta controllare e includere un solo riferimento o classe.
Di seguito sono riportati lo screenshot per il tuo riferimento.
Dopo aver risolto il problema: