【问题标题】:Same code while running on different Visual Studio version gives different output(Code and framework remains unchanged)在不同的 Visual Studio 版本上运行相同的代码会产生不同的输出(代码和框架保持不变)
【发布时间】:2018-02-15 12:07:20
【问题描述】:

我开发了一个应用程序,它在 exe 所在的位置创建一个文件(在我们的例子中是“C:\Program Files....\MyApplication”)

相同的代码在不同的 Visual Studio 版本上运行会产生不同的输出:

场景如下:

环境 1: VisualStudio2005、.Net Framework 2.0

输出: 文件自动创建在用户文件夹中(C:\Users\User\AppData\Local\VirtualStore),而不是在 exe 的位置(C:\Program Files....\MyApplication)

环境 2: VisualStudio2008、.Net Framework 2.0

输出:应用程序未运行并显示文件访问错误(“访问路径”C:\Program Files.....\MyApplication\File.txt”被拒绝)。

能否请您帮忙分析一下Visual Studio 版本从2005 年更改为2008 年时的行为变化(代码和框架保持不变)?

谢谢。

【问题讨论】:

  • 检查执行代码的 .Net runtime 版本。我假设您是从 IDE 中运行该应用程序? (即“运行(调试)”或“运行(发布)”按钮?)
  • 请将确定文件保存位置的代码添加到您的问题中
  • .Net 2...哇,那是 2006 年
  • @MichaelRandall 嗯,有些公司确实有一些叫做“遗留代码”的东西......这很公平。如果它没有坏,就不要修理它。 2006 年与我现在在我这里的交易相比,真的不算什么...... :(
  • 但是,给我看看代码。

标签: c# visual-studio-2008 visual-studio-2005 .net-2.0


【解决方案1】:

您的问题(如果它在同一台机器上)可能不是您的代码,也可能不是您运行的 Visual Studio 和 .Net 版本完全不受现代操作系统支持。 C:\Program Files 和 c:\Program Files(x86) 受 Windows 权限和用户帐户控制的保护。如果 VS 没有以管理员身份运行,或者您的帐户是本地管理员,您可能会被禁止直接在此目录中构建。右键单击 VS 2008 可执行文件并确保在其属性中将其设置为以管理员身份运行。

【讨论】:

  • 是的,它以管理员身份工作。但我不确定为什么在以普通用户身份运行应用程序时会出现两种不同的行为。即如果路径不可访问,为什么在 2005 年它会自动获取用户帐户并将文件保存在那里,但在 2008 年它显示错误消息。
  • 有可能 VS 2005 是以管理员身份安装的,而 VS 2008 不是。 VS 2005 也可能在模拟“虚拟化”部署,因为 VS 2008 正在尝试对文件夹进行真正的部署。无论哪种方式,这实际上都是可取的。我不建议直接部署到受 UAC 保护的文件夹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 2021-11-12
相关资源
最近更新 更多