奇怪的警告信息阻止设计师打开文件visual studio 2010

时间:2012-09-27 14:38:21

标签: c# winforms visual-studio warnings designer

我有一张源自现有表格的表格。现有的形式完美无缺。当我尝试打开新表单时(第一次)我收到设计师的错误:

为防止在加载设计器之前可能丢失数据,必须解决以下错误:

拒绝访问路径'C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ Logs \ eventlog.dat'。

此文件甚至不存在。如果我看一下调用堆栈就会变得更加奇怪。在派生自的表单的构造函数中,有一个创建日志文件的类。

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at MeterView.MVLogger..ctor() in C:\Users\glevenson\Documents\Visual Studio 2010\Projects\MeterView\MeterView\MVDataLogger.cs:line 67
at MeterView.MVLogger.get_Instance() in C:\Users\glevenson\Documents\Visual Studio 2010\Projects\MeterView\MeterView\MVDataLogger.cs:line 79
at MeterView.frmSingle..ctor() in C:\Users\glevenson\Documents\Visual Studio 2010\Projects\MeterView\MeterView\frmSingle.cs:line 167 

这是引用实际上创建目录和日志文件的行代码,但是来自应用程序当前目录。这毫无意义。

为什么会生成关于不存在的文件的警告,为什么它阻止我在设计器中做任何事情?此刻我因此而完全死在水中。

感谢您的任何建议。

3 个答案:

答案 0 :(得分:2)

你在这里犯的两个错误。第一个是您没有指定文件的完整路径名。您只需指定“eventlog.dat”即可创建/打开日志文件。如果未将默认工作目录设置在您希望的位置,则会出错。在设计模式中,它肯定没有任何开心。在发运项目后从未设置正确,您无法写入c:\ program files的子目录。您必须使用Environment.GetFolderPath()来选择可以写入的AppData路径。

第二个错误是您允许此代码在设计模式下运行。使用DesignMode属性来防止这种情况发生。

答案 1 :(得分:0)

基于你所拥有的东西进行疯狂猜测,但是知道Visual Studio,这是我的猜测(在评论中不能很好地格式化,所以上帝,请原谅我):

    由于缺乏正确的初始化,
  1. MVDataLogger类存在问题
  2. MVDataLogger尝试加载/读取/写入名为" Logs \ eventlog.dat"
  3. 的文件
  4. MVDataLogger在打开文件/目录之前不确保文件/目录存在。
  5. 我相信修复这些项目可以解决您的问题。

答案 2 :(得分:0)

构造函数中的代码生成错误。尝试评论构造函数的所有自定义代码。如果没有问题,请取消注释行,直到再次出现错误为止。 尽量避免构造函数中的不安全初始化。或者使用:

if(!DesignerProperties.GetIsInDesignMode(this))
{
   // do something not dupported in designer 
}