2010-07-05 2 views
1

Je mets à jour notre CruiseControl.NET environnement d'intégration continue d'utiliser les anciens Visual Studio 2008 des projets de déploiement Web à Visual Studio 2010.Pourquoi mon application MVC signale-t-elle le nom GetExecutingAssembly en tant que App_web_xxxxx.dll?

Je ne veux pas utiliser les projets de déploiement Web Beta 2010 que je pense que je peux utiliser de la mise à jour Publishing/Packaging en 2010.

Actuellement, j'ai réussi à configurer le script CruiseControl pour appeler MSBuild deux fois. Tout d'abord, construisez la solution dans la configuration Release, puis empaquetez le projet MVC. Je copie ensuite les fichiers corrects du paquet à partir d'un chemin de fichier hideux (ce qui me fait penser que je ne fais pas ce droit mais heh) et le web.configs Transformed au serveur de test. Cela fonctionne finalement mais contrairement à quand j'ai utilisé les projets de déploiement 2008, ce code renvoie le ExecutingAssembly en tant que App_web_xxxxx.dll et pas Company.Product.Web.dll qui est ce que je suis après.

Dim CurrentAssembly As Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly 
Dim version As String = CurrentAssembly.GetName.Version.ToString 

Je sais GetName retourne la chaîne plus que juste le nom, mais je suis le débogage pour voir ce qu'il contient. Je comprends que c'est la DLL compilée/mise en cache mais pourquoi n'est-elle pas celle dans le bac MVC.

Vive

Répondre

2

Je compris cela - essentiellement quand je l'appelais Assembly.GetExecutingAssembly à l'intérieur du footer.ascx. Cela signifiait que le code était dans une DLL dynamiquement compilée pour le pied de page. Ce que je voulais était la DLL pour le site Web de MVC. J'ai donc utilisé une propriété d'extension sur le contrôleur qui définit ViewStates avec les informations d'assemblage.

Dans mon cas, je vais vouloir utiliser à nouveau ce code afin que la propriété d'extension soit dans un Assemmly différent que je peux inclure dans divers projets MVC. Cela signifiait que je devais changer le code pour utiliser Assembly.GetCallingAssembly mais cela fonctionne maintenant exactement comme je le voulais.

Questions connexes