我有一个使用第三方软件“DevExpress”的大型点击一次应用程序。 DevExpress DLL占我应用程序大小的95%。它们永远不会改变,但每次部署更新时我都需要将它们上传到我的FTP服务器,这需要一段时间才能完成。有没有办法有一个单独的包链接这个我的单击一次应用程序的DevExpress文件?
注意:在客户端,click-once可以有效地管理它,不会下载未更改的文件。
由于
答案 0 :(得分:0)
您可以本地化程序集,这有点像将它们放入GAC,只有它们将被隐藏在%USERPROFILE%文件夹中(与其他ClickOnce程序集一起使用)。
您可以通过在App.Config文件中声明它们,然后在项目中将每个程序集设置为“Exclude”。以下是App.Config需要看起来的片段:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DevExpress.BonusSkins.v16.1" culture="neutral" publicKeyToken="B88D1754D700E49A"/>
<codeBase version="16.1.4.0" href="http://YourUrl/DevExpress/16.1.4/DevExpress.BonusSkins.v16.1.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DevExpress.Charts.Designer.v16.1" culture="neutral" publicKeyToken="B88D1754D700E49A"/>
<codeBase version="16.1.4.0" href="http://YourUrl/DevExpress/16.1.4/DevExpress.Charts.Designer.v16.1.dll"/>
</dependentAssembly>
第一次单击一次部署时,它将检查文件是否已本地化。如果是这样,它将使用它们。如果没有,它将下载一次(并且只下载一次)。
优点:
缺点:
这也适用于UNC路径 - 如果您的用户都是内部用户,则不需要Web引用。