Questa domanda potrebbe essere un po 'strana, ma esiste un modo specifico per importare un riferimento C ++ in un progetto ASP.NET C #?
Il problema che sto avendo è che VS mi sta dando il seguente errore:
Error CS0246 The type or namespace name 'LicenseAdminApi' could not be found >(are you missing a using directive or an assembly reference?)...
Questo errore si manifesta solo nelle mie viste e non nel mio controller o in qualsiasi codice .cs, il codice all'interno delle mie viste in cui i campi di riferimento I definiti all'interno della DLL funzionano anche senza problemi. E il progetto compila / crea ed esegue come previsto senza problemi.
LisenseAdminApi è una DLL scritta anche dalla nostra azienda, solo in un dipartimento diverso ed è stata sviluppata in C ++. È necessario eseguire un runtime di Visual Studio 2015 C ++ ("Microsoft Visual C ++ 2015 Redistributable (x64) - 14.0.23918"). Ho anche dovuto modificare il mio progetto per eseguire in x64 e utilizzare la versione x64 di IIS. Senza installarlo ottengo il seguente errore quando provo ed eseguo il progetto:
Server Error in '/' Application.
Could not load file or assembly 'LicenseAdminApi.DLL' or one of its >dependencies. The specified module could not be found. Description: An unhandled exception occurred during the execution of the >current web request. Please review the stack trace for more information about >the error and where it originated in the code.
Exception Details: System.IO.FileNotFoundException: Could not load file or >assembly 'LicenseAdminApi.DLL' or one of its dependencies. The specified module >could not be found.
Simile all'errore VS mi sta dando nella lista degli errori, il che mi fa pensare che non sta usando il runtime in VS per leggere la DLL fino a quando il progetto non è compilato. È piuttosto strano perché, come ho detto, il progetto si integra perfettamente e viene eseguito senza problemi una volta installato il runtime, ma l'errore nella lista degli errori non sta andando via e ho bisogno di sistemarlo in quanto la politica aziendale non è di fare alcun codice con errori.
Modifica Se dovessi aggiungere "@using LicenseAdminApi" alla vista, mi viene restituito lo stesso errore nell'elenco degli errori. Non sono sicuro di quale soluzione provare se non sapessi cosa non va, per cominciare.
L'uso della DLL non è il problema, posso chiamare i metodi che mi servono e funzionano. Il problema è che VS mi sta dando un errore che sembra non esistere quando costruisco ed eseguo il mio progetto. A parte il modo standard di aggiungere un riferimento che presumo tutti sanno, c'è qualcosa che devo abilitare affinché VS legga la DLL C ++ prima di compilarla?
Modifica 2
Nelle mie viste / Web.config ho incluso il mio spazio dei nomi come il seguente:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
...
<add namespace="LicenseAdminApi" />
</namespaces>
</pages>
Che secondo me dovrebbe rendere lo spazio dei nomi disponibile nelle mie visualizzazioni, ma non è così.
Ancora una volta il codice funziona bene e il mio progetto sta crescendo, è solo quando non eseguo il debugging che VS mi sta dicendo che il mio tipo / spazio dei nomi non può essere trovato. Questo si verifica anche solo nelle mie visualizzazioni, all'interno dei miei controller posso fare riferimento allo spazio dei nomi senza ottenere un errore. Anche se ottengo l'errore in VS il codice e le mie viste funzionano perfettamente quando eseguo il debug
Per favore fatemi sapere se qualcuno ha bisogno di maggiori dettagli, ho provato molte soluzioni diverse comprese tutte le risposte fornite here
Grazie in anticipo