3

私はここ数年、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 を削除すると、アプリケーションは設計されますが、コンパイルされません。フォームを変更するたびに参照を削除する必要はありません。

4

1 に答える 1

0

スタック トレースからの c++/cli および/または c# 参照の問題だと思います。

VSLangProj.Reference.get_Path()

c++/cli および/または c# プロジェクトで無効な参照を削除してみてください。(無効な参照は、プロジェクトのプロパティで感嘆符のアイコンでマークされます)

于 2013-06-26T07:48:32.053 に答える