且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在加载设计器错误之前防止可能的数据丢失

更新时间:2023-10-27 23:46:22

我在改变.Net框架后遇到了与C#相同的问题从3.5到4.0并将第三方组件(VistaDB)从.Net 2.0升级到.Net 4.0我无法在Designer中查看其中一个表单(LaunchFindAlike)并收到警告消息,其中包含以下详细信息:



I had the same problem with C# - after changing the .Net framework from 3.5 to 4.0 and upgrading a 3rd party component (VistaDB) from .Net 2.0 to .Net 4.0 I could not view one of the forms (LaunchFindAlike) in the Designer and received the warning message with the following details:

Could not find type 'LaunchFindAlikeNS.MultiColumnComboBox'
Variable mcboErrorText either undeclared or never assigned
Could not load file or assembly VistaDB.5.NET20 …. The system cannot find the file specified
Variable KeywordListTableAdapter either undeclared or never assigned
Variable SourceIndexesTableAdapter either undeclared or never assigned
Duplicate declaration of member KeywordListTableAdapter
Duplicate declaration of member SourceIndexesTableAdapter





消息非常令人困惑,Goto Code或Show Call Stack显示无效。



我尝试将文件LaunchFindAlike.csproj(使用Notepad ++)与.Net 3.5版本的新版本进行比较,发现了许多不同之处。 (LaunchFindAlike.Designer.csproj文件完全相同)。一些差异是







The messages were very perplexing and the 'Goto Code' or Show Call Stack displays were not helpful.

I tried comparing files LaunchFindAlike.csproj (using Notepad++) for the new version with the .Net 3.5 version and found a number of differences. (The LaunchFindAlike.Designer.csproj files were identical). Some of the differences were


<reference include="VistaDB.5.NET40, Version=5.1.0.0, Culture=neutral, PublicKeyToken=dfc935afe2125461, processorArchitecture=MSIL">
      <specificversion>False</specificversion></reference>





而不是





instead of

<reference include="VistaDB.5.NET20"></reference>

b $ b








and

<none include="Settings.settings"></none>





而不是





instead of

<compile include="Properties\Settings.Designer.cs"></compile>

b $ b







and

<compile include="Settings.Designer.cs"></compile>





而不是





instead of

<compile include="Properties\Settings.Designer.cs"></compile>





我更改了LaunchFindAlike.csproj(.Net 4.0)以删除.NET40之后的所有内容,如下所示





I changed LaunchFindAlike.csproj (.Net 4.0) to remove everything after .NET40 as shown below

<reference include="VistaDB.5.NET40"></reference>





我删除了< compile include =... =>中的其他差异语句然后发现我可以查看表单但由于文件没有构建项目

Project \ ... \ LaaunchFindAlike \Properties \ Setting.Designer.cs不存在。我从Project \ ... \ LaunchFindAlike复制了这个文件,然后项目构建好了。



修复的细节可能对其他用户有所不同,但是手动编辑.csproj文件以查找违规表格以使其类似于早期版本似乎是一个useul路径。确保在更改.Net框架之前保留备份。



I removed other differences in the <compile include="" ...=""> statements and then found that I could view the form but not build the project due to the file
Project\...\LaunchFindAlike\Properties\Settings.Designer.cs not being present. I copied this file from Project\...\LaunchFindAlike and the project then built OK.

The details of the fix may be different for other users but manually editing the .csproj file for the offending form to make it resemble the earlier version seems to be a useul path. Make sure you keep a backup before changing .Net frameworks.