私はここ数年、C++/CLI を使用して多くの経験を積んできました。私が知っていることが 1 つあるとすれば、混合モードの DLL は設計に適していないということです。
CPPPROJECT に依存する CSPROJECT をプロジェクトにしています (プロジェクト参照、copylocal=true、versionspecific=false、copylocalsattelitedpeendances=false を使用)。
CSPROJECT からフォームまたはユーザーコントロールを開こうとするたびに、system.exception
スローされました。
fuslogvw を試してみましたが、障害がディスクにバインドされません。デバッグするために 2 番目の 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)
足りないものはありますか?この時点でどのようなデバッグ戦略を使用できますか?
この CPPProject プロジェクトは、私の CSPROJECT に必要です。CPPProject を削除すると、アプリケーションは設計されますが、コンパイルされません。フォームを変更するたびに参照を削除する必要はありません。