2014-06-30 43 views
12

有一個ASP.NET應用程序有幾個在這種格式Web.Config文件:我可以告訴bindingRedirect始終使用最新的可用版本嗎?

<dependentAssembly> 
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.6.5135" newVersion="1.6.5135" /> 
</dependentAssembly> 

這些庫來作爲的NuGet包。

現在每次更新我20+的NuGet包我做這樣的事情:

  1. 一鍵更新所有軟件包。
  2. 在瀏覽器中打開應用程序。
  3. 查看錯誤,如this one
  4. 打開我的Web.Config,找到綁定重定向條目。
  5. 查找程序集最新版本。
  6. 修改我的web.config。
  7. 更新所有其他更新的具有綁定重定向的NuGet包的步驟2 ... 6。

這是非常難煩人。

我的問題:

有沒有辦法告訴bindingRedirect entry總是使用最新版本?

E.g.是這樣的:

<bindingRedirect oldVersion="0.0.0.0-*" newVersion="*" /> 

(使用通配符告訴最新版本)

最近我才翻過是一樣的東西:

<bindingRedirect oldVersion="0.0.0.0-9.9.9.9" newVersion="1.6.5135" /> 

(僅限指定的最新版本一次)

+0

作爲我在服務器上的實時網站上的一個非常好的解決方法,我編寫了一個命令行腳本,通過解析出acutal程序集的版本並相應地修改web.config文件來自動調整綁定重定向。 –

+1

不介意分享該腳本,你會嗎?我遇到了同樣的事情。 – asawyer

+0

@asawyer它深深隱藏在一個大的自定義[CS腳本](https://github.com/oleg-shilo/cs-script)構建腳本中。基本上打開配置文件,從程序集讀取DLL版本,替換配置中的字符串,寫回配置文件。 –

回答

4

不幸的是,答案是否定的。請參閱bindingRedirect element on MSDN

報價:

oldVersion:必需屬性。

指定最初請求的程序集版本。程序集版本號的格式是major.minor.build.revision。這個版本號的每個部分的有效值爲0到65535

你也可以指定一個範圍按以下格式版本: 爲n.n.n.n - 爲n.n.n.n

NEWVERSION:必需屬性。 以下列格式指定要使用的程序集版本,而不是原始請求的版本:n.n.n.n

該值可以指定比oldVersion更早的版本。

相關問題