在VS2012中将MSBuild版本添加到ASP.NET Web项目

时间:2013-04-04 19:13:54

标签: asp.net msbuild webforms versioning cache-control

我正在使用ASP.NET Web窗体(对我来说是双重耻辱)项目的Visual Studio 2012中的Web站点解决方案(不是Web应用程序的耻辱)。 我想在每个构建版本上都有一个自动增量版本,以便我可以在我的代码中检索它并用于静态文件版本控制(主要是css和js)以避免chache它。

我想获得的是像/mydir/mystyle.css?v=buildversionhere

这样的链接

我发现了一个很好的代码来检索版本:

Dim web As Assembly = Assembly.GetExecutingAssembly()
Dim webName As AssemblyName = web.GetName()
Dim myVersion As String = webName.Version.ToString()

它有效,问题是我总是得到0.0.0.0。 我需要知道的是如何在每个网站构建上设置自动增量,比如在哪里设置这样的内容:

[assembly:AssemblyFileVersion("1.0.*")]

请记住我在Web站点项目上,而不是在Web应用程序上。 提前致谢

1 个答案:

答案 0 :(得分:1)

好吧..经过一些深入研究和一些头脑破碎,因为文件(官方)通常非常肤浅,我找到了一种方法来做到这一点。 因此,如果你有一个WEB SITE项目,并希望在你的网站上添加半自动版本控制(也许是为了你想要的任何用途来检索这个版本,比如取消静态文件缓存附加?v =版本),这里是如何做到的:< / p>

  • 在项目中创建一个不在App_Code文件夹中的文件,并将其命名为AssemblyInfo.vb(我在VB中编码。如果您需要在Google中使用C#搜索“Telerik Code Converter”)。如果需要,可以将文件放在App_Data文件夹中
  • 在此文件中,您不需要创建任何类,只需为插入此代码的.DLL指定信息:

实施例

Imports System.Reflection

<Assembly: AssemblyDescription("desc")> 
<Assembly: AssemblyCompany("company")> 
<Assembly: AssemblyCopyright("Copyright © 2013 your name")> 
<Assembly: AssemblyProduct("asdasd")> 
<Assembly: AssemblyVersion("2.0.*")> 

然后在你的web.config中(在“configuration”标签之间)插入以下代码:

<system.codedom>
 <compilers>
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    compilerOptions='"C:\Absolutepath\App_Data\AssemblyInfo.vb"' />
 </compilers>
</system.codedom>

包含AssemblyInfo.vb文件的路径。 注意:如果你不想像我一样浪费时间......这条道路必须是绝对的,不可能是相对的。因此,当您在另一台服务器上移动您的网站时,请记得更改它。