2013-04-04 78 views
0

我正在ASP.NET Web Forms(对我来说是双重耻辱)项目的Visual Studio 2012中处理Web站点解决方案(而不是Web应用程序对我的耻辱) 。 我想在每个版本上都有一个自动增量版本,这样我就可以在我的代码中检索它并用于静态文件版本控制(主要是css和js),以避免乱用它。将MSBuild版本添加到VS2012中的ASP.NET Web项目

我想获得什么像/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应用程序。 在此先感谢

+0

您是否预编译部署? - http://msdn.microsoft.com/en-au/library/399f057w(v=vs.85).aspx – Snixtor 2013-04-04 21:52:41

+0

Hallo Snixtor,我还没有达到部署阶段(我很远),但是我是猜我会 – Manight 2013-04-04 22:11:50

+0

我的怀疑是,除非你预编译,你不会得到一个版本号。或者至少不是有意义的。 – Snixtor 2013-04-04 23:06:20

回答

1

行..经过一些深入的研究和一些令人头痛的破碎,因为文档(官方)往往很肤浅,我找到了一种方法来做到这一点。 所以,如果你有一个WEB SITE项目,并且希望向你的网站添加半自动版本控制(也许你想要取消这个版本的任何用法,就像取消静态文件缓存附加?v =版本一样),这里是怎么做的:

  • 在你的项目中的App_Code文件夹并将其命名为像AssemblyInfo.vb中创建一个文件NOT(我编码VB。如果你需要C#搜索“Telerik的代码转换器”在谷歌)。你可以把文件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中(“配置”标签之间)插入此代码:

<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的文件。 注意:如果你不想像我这样浪费时间......这条道路必须是绝对的,不能是相对的。因此,当您在另一台服务器上将您的网站迁移到生产环境时,请记住更改它