0

MS Visual Studio 2010からのアプリケーションの実行に問題があります。実際、これは長い話であり、以前はさまざまな関連する問題に直面していました。しかし、プロジェクトは変更なしで少なくとも半年間機能しました。そして今、私はそれを再び実行しようとしていますが、効果はありません。最初は、同じように見える可能性のある関連する問題に関するいくつかのリンクがあります(ただし、同じではないように見えます-関連しているだけです)。

プロジェクトの.NETターゲットフレームワークを4.0から3.5に変更した後、ファイル(またはアセンブリ)が見つかりません

アプリケーションを.net4.0から3.5にダウングレードします

3.5フレームワークを対象とするVS2010のRESXファイルに関する問題

私のプロジェクトにはTargetFramework=2.0があり、アプリの画像とアイコンを含むresxリソースファイルがいくつか含まれています。以前はリソースファイルのコンパイルに問題がありましたが、上記のリンクの投稿のように修正しました。そして、すべてが昨日まで正常に機能しました(私はそのプロジェクトを長い間開いていないので、環境で何が正確に変わったかを言うことはできません)。

そして今、問題自体:プロジェクトのビルドは成功しますが、アプリケーションを実行すると、フォームデザイナコードのリソースでFileNotFoundExceptionが発生します。GetObject( "myImageName")':

Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
at System.RuntimeTypeHandle._GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
at System.RuntimeType.PrivateGetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName, Boolean throwOnError)
at System.Resources.ResourceReader.FindType(Int32 typeIndex)
at System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
at System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
at System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
at System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString)
at System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream)
at System.Resources.ResourceManager.GetObject(String name)
[MYAPP stack trace part. Hope you don't need it]
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

Microsoftサイトでこの問題について質問したところ、まったく同じ問題を抱えている人がもう1人見つかりました。しかし、彼の質問は無視され、私の質問にもまだ答えられていません。

環境: Windows 7 x64、.NET 4.0 SP1、VS 2010UltimateSP1。プロジェクトビルド構成:Debug / AnyCPU(AnyCPU / x86のデバッグ/リリースを試しました-すべて同じです。x64とIA64-はこのプロジェクトでは不可能です)

調査の詳細:

  • resxファイルには、4.0アセンブリへの参照は含まれていません。特に、System.Windows.Forms2.0とSystem.Drawing2.0を参照しています。
  • プロジェクトには含まれていません(TargetFramwork 2.0があるため、4.0アセンブリへの参照を含めることはできません)
  • プロジェクトフォルダ全体で「4.0」エントリを検索すると、奇妙な事実が見つかりました。私のexeファイルにはmscorlib4.0への参照があります。実際、私はそれがどのように起こり得るのか、そしてそれをどのように修正するのか理解できません。AppDomain.CurrentDomain.GetAssemblies()はmscorlib 2.0を返しますが、4.0(およびバージョン2.0の他のすべての.NETアセンブリも同様)ではありません。
  • resgenを32ビットモードに切り替えても効果はありません。それを元に戻すことも役に立たない。
  • 「正しい」バージョンのresgenを使用するようにメモ帳でprojファイルを変更しても効果はありません
  • 一日中の調査と他の多くの試みは失敗しました。同じ問題を抱えている人はあまりいません。
  • TargetFramework = 3.5の場合も同じですが、TargetFramework = 4.0に設定すると、すべて正常に動作し始めます。残念ながら、現在.NET4.0に移行することはできません。
4

0 に答える 0