c# - 我的 Winforms C# 项目设计器被我的 C++/CLI 项目消灭了

标签 c# winforms visual-studio-2010 c++-cli windows-forms-designer

在过去的几年里,我有很多使用 C++/CLI 的经验,如果我知道一件事,那就是混合模式 DLL 不利于设计。

我有一个 CSPROJECT 项目,它依赖于 CPPPROJECT(使用项目引用、copylocal=true、versionspecific=false、copylocalsattelitedpeendances=false)。

每当我尝试从 CSPROJECT 打开表单或用户控件时,我都会得到:system.exception 被抛出。

我试过 fuslogvw,它不会将任何故障绑定(bind)到磁盘。我尝试打开第二个 devenv 进行调试,但它只是在设计器在其调用堆栈中显示的同一位置中断。这是我的 CPPPROJECT 引用的 csproj 片段:

<ProjectReference Include="..\dfResultsStructures\dfResultsStructures.csproj">
  <Project>{D93C5625-0EB1-4645-95C8-F389758521EE}</Project>
  <Name>dfResultsStructures</Name>
  <Private>False</Private>
  <SpecificVersion>False</SpecificVersion>
</ProjectReference>

下面是调用栈

   Exception of type 'System.Exception' was thrown.    

Instances of this error (1)  

1.   Hide Call Stack 

at VSLangProj.Reference.get_Path()
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AddProjectDependencies(Project project)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly()
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName, String typeName, Boolean ignoreTypeCase, Boolean allowPrivate, Assembly& assembly, String description)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName, String typeName, Boolean ignoreTypeCase, Assembly& assembly, String description)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchProjectEntries(AssemblyName assemblyName, String typeName, Boolean ignoreTypeCase, Assembly& assembly)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchEntries(AssemblyName assemblyName, String typeName, Boolean ignoreCase, Assembly& assembly, ReferenceType refType)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, ReferenceType refType)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.GetRuntimeType(String typeName)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.GetType(String typeName)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.GetType(String typeName)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.GetType(IDesignerSerializationManager manager, String name, Dictionary`2 names)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.FillStatementTable(IDesignerSerializationManager manager, IDictionary table, Dictionary`2 names, CodeStatementCollection statements, String className)
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)  

有什么我想念的吗?此时我可以使用哪些调试策略?

我的 CSPROJECT 需要这个 CPPProject 项目。如果我删除 CPPProject,我的应用程序会设计,但不会编译。我不想每次修改表单时都必须删除引用。

最佳答案

我猜这是来自堆栈跟踪的 c++/cli 和/或 c# 引用问题:

VSLangProj.Reference.get_Path()

尝试删除您的 c++/cli 和/或 c# 项目中的任何无效引用。 (无效的引用在项目属性中用感叹号图标标记)

关于c# - 我的 Winforms C# 项目设计器被我的 C++/CLI 项目消灭了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075344/

相关文章:

C# WebAPI 没有正确序列化动态属性

c# - IDisposable 对象作为方法的 ref 参数

C# 不写入设置

c# - 关于处理表单的代码分析警告

asp.net-mvc-3 - 我能否使用 Razor Intellisense 查看 .html 文件,就好像它们是 Visual Studio 2010 中的 .cshtml 文件一样?

c# - 编译器是否优化了重复的相同检查

c# - 绑定(bind) MenuItem 的 ItemsSource 和 IsChecked 以获取 WPF 中的可检查项列表

c# - 单元格值更改事件,c#

c# - IHTMLImgElement 到 byte[]

visual-studio-2010 - Visual Studio 2010 - RemovePreviousVersions