ClickOnce - 文件已存在錯誤 - 為什麼 DLL 文件試圖被 ClickOnce 複製兩次?
ClickOnce 是否僅查看應用程序清單文件以確定將哪些 dll 文件複製到客戶端電腦,或者它是否還詢問程序集的內部以確定依賴文件?
我問的原因是因為我在嘗試啟動已使用 ClickOnce 發布的 WPF .NET 4 應用程序時收到以下 ClickOnce 錯誤:文件
C:\Users\CNelson\AppData\Local\Temp\Deployment\PGX6P33A.35N\AJQL8AC8.D60\tx16_rtf.dll已存在。在我包含對兩個都引用非託管 dll 文件 (tx16_rtf.dll) 的第 3 方 .NET dll 的引用之後,此錯誤開始。我希望將 tx16_rtf.dll 複製到客戶端 PC 上的 bin 文件夾中,因此我已將其包含在我的項目中,並將建構操作設置為“內容”,將復製到輸出目錄設置為“始終複製”。
但是,由於某種原因,當我嘗試啟動應用程序時,ClickOnce 試圖複製文件“tx16_rtf.dll”兩次,這會導致錯誤。
如果我查看部署清單文件,我可以清楚地看到文件“tx16_rtf.dll”的一個且只有一個條目。所以,我的問題是,如果 ClickOnce 在部署清單文件中只存在一次,為什麼 ClickOnce 會嘗試複製文件 ’tx16_rtf.dll’ 兩次?
以下是引用“tx16_rtf.dll”的部署清單文件的片段:
<file name="tx16_rtf.dll" size="839680"> <hash> <dsig:Transforms> <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>V6i2QcARl3+1SJHCugoazb9zrOY=</dsig:DigestValue> </hash> </file>
在您的 Visual Studio 解決方案中,文件是如何添加的?請嘗試以下方法。
將 dll 添加到您的項目中。
如果在 References 中有對 dll 的引用,請像這樣設置 dll 上的屬性:Build Action = none,Copy to output directory = “do not copy”。然後刪除引用,然後重新添加引用,但指向本地項目文件夾中的那個 dll。在參考上,將“複製本地”設置為 true。
如果您沒有 dll 的引用,請像這樣設置 dll 上的屬性:Build Action = “copy”。複製到輸出目錄 =“始終複製”。
如果您有參考,您希望包含它的原因是基於參考,而不是基於 dll 屬性。如果您沒有參考,則需要專門設置要包含的 dll。
還要檢查應用程序文件對話框並確保 dll 未標記為包含(先決條件),而是包含或包含(必需)。