C# ClickOnce清单文件-复制;文件";正在生成的条目
我的ClickOnce应用程序遇到了各种各样的问题,尽管我努力解决了这些问题,但我还是在最后的关卡上摔倒了 我需要我的WPF(.Net 4.0)应用程序在我的项目中包括一个COM组件和3个DLL。COM组件是: 以及3个DLL,它们需要位于可执行目录中: COM组件还需要一个自定义的C# ClickOnce清单文件-复制;文件";正在生成的条目,c#,com,clickonce,manifest,C#,Com,Clickonce,Manifest,我的ClickOnce应用程序遇到了各种各样的问题,尽管我努力解决了这些问题,但我还是在最后的关卡上摔倒了 我需要我的WPF(.Net 4.0)应用程序在我的项目中包括一个COM组件和3个DLL。COM组件是: 以及3个DLL,它们需要位于可执行目录中: COM组件还需要一个自定义的.manifest文件,我的项目将使用该文件:下面是其中的一个示例部分,引用了其中一个DLL: <file name="BytescoutVideoMixerFilter.dll" asmv2:size
.manifest
文件,我的项目将使用该文件:下面是其中的一个示例部分,引用了其中一个DLL:
<file name="BytescoutVideoMixerFilter.dll" asmv2:size="203368" xmlns="urn:schemas-microsoft-com:asm.v1">
<hash xmlns="urn:schemas-microsoft-com:asm.v2">
<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>JYpOccueoR7YDchdz+iCMPquHtg=</dsig:DigestValue>
</hash>
<comClass clsid="{4407F28D-97C2-41C5-A23F-2FAE465CE7BB}" threadingModel="Both" tlbid="{8EDAD3BB-AE5F-43B4-A2F1-B04F4130F2E0}" description="Bytescout Video Mixer Filter" />
。。。因此,一个文件有两个部分;第一个是我清单中的设置,另一个似乎是在没有comClass
行的情况下自动生成的。当然,由于两者都引用相同的DLL,Windows会抱怨并拒绝运行应用程序
所以我被困在岩石和坚硬的地方之间:
- 如果我将DLL构建操作设置为Resource(或其他任何内容),则它们不会包含在已发布的包中。由于发布的
文件引用了这些文件,ClickOnce包不会部署-它会抱怨“缺少文件”(例如.manifest
)BytescoutVideoMixerFilter.dll.deploy
- 如果我将DLL构建操作设置为Content,它们将包含在已发布的包中,但是已发布的清单现在有重复的条目
如果我能解决这两个问题中的任何一个,我就完蛋了,我再也不会碰COM了。但是,我已经尝试了所有的方法:如果不破坏清单文件,我就无法获取发布包中包含的文件 我设法找到了一种解决办法。这很可怕,但我:
- 将项目中DLL的生成操作更改为“无”
- 在项目中创建了一个名为“Resources”的文件夹,并将DLL的单独副本放在其中。在这些基础上的构建操作是“内容”
- 发布项目现在包括Resources文件夹中的DLL,扩展名为
.deploy
- 我将这些
文件复制到父目录.deploy
- 我现在可以通过ClickOnce下载/更新应用程序
<file name="BytescoutVideoMixerFilter.dll" asmv2:size="203368" xmlns="urn:schemas-microsoft-com:asm.v1">
<hash xmlns="urn:schemas-microsoft-com:asm.v2">
<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>JYpOccueoR7YDchdz+iCMPquHtg=</dsig:DigestValue>
</hash>
<comClass clsid="{4407F28D-97C2-41C5-A23F-2FAE465CE7BB}" threadingModel="Both" tlbid="{8EDAD3BB-AE5F-43B4-A2F1-B04F4130F2E0}" description="Bytescout Video Mixer Filter" />
</file>
<file name="BytescoutVideoMixerFilter.dll" size="203368">
<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>JYpOccueoR7YDchdz+iCMPquHtg=</dsig:DigestValue>
</hash>
</file>