我通常只使用 C# 创建 Web 应用程序,但我曾尝试转而创建 WinForms 应用程序。我创建了一个 OpenVPN 客户端,它基本上是 OpenVPN.exe
之上的外观。该项目需要包含 OpenVPN.exe
文件,它的位置如下:
string ovpnLocation = System.Windows.Forms.Application.StartupPath
+ "\\OpenVPN_Client\\openvpn.exe";
我在 VS 中对文件应用了以下属性:
- 构建操作:内容
- 复制到输出目录:总是复制
现在,当我尝试使用 ClickOnce 安装程序部署应用程序时,出现以下错误:
文件 openvpn.exe 的计算哈希值与 list 中指定的哈希值不同。
在清理、重建并按照我在整个互联网上找到的所有其他帖子中的说明进行操作后,我似乎无法通过这些当前设置解决这个问题。我能够安装和运行它的唯一方法是将文件上的设置更改为以下内容:
- 构建操作:无
- 复制到输出目录:总是复制
现在有了这些设置,在部署时,我不会得到相同的散列错误,但文件的位置似乎已经移动,我的代码到处都抛出异常,因为它找不到它。
所以有两种解决方案:
- 解决散列问题,不更改任何代码。
- 现在找到一些代码来帮助我在最终用户机器上找到文件。
非常感谢任何帮助!
最佳答案
我通过将项目升级到 .Net 4.0 设法解决了这个问题。
通过使用相对路径解决了文件路径的问题:
string ovpnLocation = "OpenVPN_Client\\openvpn.exe";
而不是试图创造一个绝对的:
string ovpnLocation = System.Windows.Forms.Application.StartupPath
+ "\\OpenVPN_Client\\openvpn.exe";
关于c# - 文件具有与 list 中指定的不同的计算哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379329/