最近我天真地在包管理器控制臺中運行了“更新包”命令,認為擁有最新版本的東西會很好。它造成了無窮無盡的問題,雖然我已經處理了大部分,但最新的一個讓我難過。
事實證明,它很難修復,因為它不會在開發程序中發生。安裝我的應用程式后,嘗試某個操作會提示此錯誤,即使在我的開發機器上也是如此:

這發生在多個程式集上,我剛剛選擇了這個作為示例。在專案中,我有一個 BindingRedirect 以在我的 app.config 檔案中使用 4.0.0.0 版本:
<configuration>
[Settings]
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
[Other redirects]
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.SqlClient" publicKeyToken="23ec7fc2d6eaa4a5" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
[Other redirects]
</assemblyBinding>
</runtime>
</configuration>
(請注意,PublicKeyToken 在錯誤和 BindingRedirect 之間匹配)
在我的解決方案中,Microsoft.Data.SqlClient 的參考版本是 4.0.0.0,并且將“復制本地”設定為 true。我的安裝程式(使用高級安裝程式)成功地將匹配的 .dll 副本放入已安裝應用程式的目錄中。
我試圖搜索修復程式,但大多數解決方案都處理格式錯誤的 app.config 檔案或完成開發構建。據我所知,我的 app.config 很好,并且問題僅在安裝后出現。
是否需要采取一些步驟才能將系結重定向顯式嵌入到我的應用程式中?這可能是安裝程式無法從 app.config 傳輸內容的問題嗎?
我正在繼續尋找解決方案,但同時想在這里問一下,以防我遺漏了一些明顯的東西。謝謝閱讀。
uj5u.com熱心網友回復:
我為未來的 Google 員工找到了自己的解決方案:
使用“Update-Package”在 app.config 中生成了很多 BindingRedirects。構建專案會在專案的輸出目錄中創建一個包含這些重定向的 ApplicationName.exe.config。問題是 Advanced Installer 不會自動更新生成的 ApplicationName.exe.config 檔案。(它自己解決了很多事情,這不是其中之一!)
我洗掉并重新添加了該組態檔;新版本包含我的應用程式所需的重定向,我能夠再次順利運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/407601.html
標籤:
上一篇:如何在私有靜態void函式中使用字串值設定WinForm文本屬性
下一篇:如何在C#中等待某事完成?
