我编写了一个在我的 xp 开发机器上运行良好的 C# 应用程序。当我的客户端在不同的 PC 上运行它时,它似乎在 vista 和 7 机器上都冻结了。我想知道在 vista/7 上运行 dotnet 应用程序是否有任何问题。我为框架 2.0 和 3.5 编译了应用程序,但没有帮助。日志文件也没有帮助。有什么方法可以知道应用程序冻结在哪里(当然,客户端没有用于附加到应用程序的 VS)?预先感谢您的任何帮助。
皮埃尔。
通常,.NET 应用程序应该在任何安装了 .NET 框架的 Windows 版本上运行。最常见的问题与 Vista 和 7 中的新用户帐户控制策略有关,该策略阻止应用程序访问需要提升权限的区域(否则在 XP 的管理员帐户下可以正常运行)。
例如,如果您的应用程序试图将配置设置写入Program Files
文件夹(这是一个非常糟糕的主意,顺便说一句),或者使用一些硬编码的磁盘或注册表路径而不是 .NET 类中提供的环境变量,它可能会在 Vista 下失败.
要快速检查这是否是 UAC 权限问题,请尝试以管理员身份运行应用程序(让您的客户端右键单击 .exe 文件并选择以管理员身份运行)。如果它有效,那么这表明您需要检查您的代码并更新它以确保您只访问允许的区域。
查看此链接以获取更多信息:让应用程序具有 UAC 意识。
正如redsquare建议的那样,在各种 Windows 系统中测试您的应用程序的最佳方法是在多个虚拟机中运行它们(MS Virtual PC或VMWare Player,两者均可免费下载)。
您没有提供太多信息以便我们提供大量帮助。
我会首先尝试在虚拟机上本地重新创建问题(vista one available here),然后使用memprofiler之类的东西分析应用程序。
Ask your client to capture a process dump using Windows Task Manager,
Then you can do some analysis on the dump to see why it hangs.
If you are not familiar with dump analysis, find someone who can help or open a support case via http://support.microsoft.com
csharp 应用程序应该在 vista/win7 上运行。这是他们的家:)
你的问题不是操作系统。它是你的应用程序。很可能应用程序正在寻找文件、文件夹、客户端上不存在的东西并冻结。这是我的经验。
检查项目的独立性,并确保您已将项目所需的一切交付给客户。
最后,将带有调试消息的调试版本分发给一个客户端,并从他们的系统中获取反馈。