Problème lors de l’installation de AssemblyVersion dans une page Web à l’aide de Razor / MVC3

J’utilise le code suivant dans un pied de page dans mon fichier _Layout.cshtml pour mettre les données de la version AssemblyInfo dans le bas de chaque page de mon site MVC3. Toutefois:

@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToSsortingng() 

Il suffit d’imprimer dans le pied de page:

 Revision 0.0.0.0 

Lorsque j’ai modifié la vue pour afficher toutes les informations d’assemblage pour “l’assembly d’exécution” en utilisant ce qui suit

 @System.Reflection.Assembly.GetExecutingAssembly().GetName().ToSsortingng() 

Qui imprime ce qui suit:

 Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 

Cela montre que “l’assemblage d’exécution” n’est pas mon application principale, mais la vue elle-même.

Comment puis-je obtenir les informations d’assemblage pour l’application ACTUAL, pas seulement les vues individuelles?

cshtml / vbhtml est une compilation dynamic en assembleur.

 @typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version 

que dis-tu de ça?

Utiliser cette aide fonctionne pour moi:

  public static HtmlSsortingng ApplicationVersion(this HtmlHelper helper) { var asm = System.Reflection.Assembly.GetExecutingAssembly(); var version = asm.GetName().Version; var product = asm.GetCustomAtsortingbutes(typeof(System.Reflection.AssemblyProductAtsortingbute), true).FirstOrDefault() as System.Reflection.AssemblyProductAtsortingbute; if (version != null && product != null) { return new HtmlSsortingng(ssortingng.Format("{0} v{1}.{2}.{3} ({4})", product.Product, version.Major, version.Minor, version.Build, version.Revision)); } else { return new HtmlSsortingng(""); } } 

Cela fonctionne pour moi. Sans avoir besoin de mentionner explicitement le type.

 @ViewContext.Controller.GetType().Assembly.GetName().Version 

Vous devez obtenir l’assemblage d’un type dans le projet:

 typeof(MyType).Assembly.Whatever 

MyType est un type quelconque dans le projet MVC lui-même (par exemple, un contrôleur ou un modèle, ou la classe MvcApplication )

En développant la réponse de takepara, si vous souhaitez qu’un seul liner reçoive AssemblyInformationalVersionAtsortingbute à partir d’une vue de MVC Razor:

 @System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion 

Vous pouvez essayer d’utiliser le GetCallingAssembly (). Je ne suis pas sûr que ce soit suffisamment élevé dans la stack d’appels ou non, mais puisque Razor crée en fait un assemblage pour chaque vue, il va de soi que votre application serait l’assembly appelant pour l’assemblage de vues.

Mon problème était que j’avais renommé le namespace après et j’ai eu l’erreur ci-dessus. Le problème était l’ancienne référence d’espace de noms dans le fichier Views \ Web.config. Je devais le changer de Project.WebAPI17 à Company.Project.WebAPI17

               

GO to Home Controller et copiez simplement ce code:

Renommez ActionResult en chaîne

 public ssortingng Index() return typeof(Controller).Assembly.GetName().Version.ToSsortingng() ; run view 

Vous pouvez l’obtenir en utilisant la propriété Name comme ci-dessous:

  @System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; 

est ce que vous cherchez?