none
MSB4006 でコンパイルエラーになります。 RRS feed

  • 質問

  • こんにちは。

    VisualStudio 2005 や VisualStudio 2008 のプロジェクト(.dsw/.dsp) や ソリューション(.slnや.vcproj)を VisualStudio 2010 で読み込むと、新しい形式に変換されるかと思います。

    現在作成しているアプリにおいて、上記のように変換したプロジェクトをコンパイルすると以下のようなエラーが出てしまい、困っております。

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(3051,5): error MSB4006: ターゲット "GetCopyToOutputDirectoryItems" で、ターゲット依存グラフに循環する依存関係が存在します。

    使用しているライブラリは wxWidgets の dsp ファイルを変換した物(をVisualStudio 2010 でコンパイルしたライブラリ)と、VisualStudio 2008 時代に作成した自作アプリで、.NET Framework は使用しておりません。

    何か有効な手段がありましたら教えていただけないでしょうか。


    -- 電柱一家
    2010年10月15日 2:56

回答

  • こんばんは。

    私の方でも VisualStudio2005 で作成した自作ライブラリのプロジェクトを VisualStudio2010 で読み込んだところ、同じ現象に遭遇しました。

    調べてみたところ、こちらの記事が参考になりました。

    http://connect.microsoft.com/VisualStudio/feedback/details/522854/project-converted-from-vs2005-gets-msb4006-circular-dependency-error-on-build

    プロジェクトファイルに自分自身への参照ができてしまっているそうです。

    私の場合、いったん VisualStudio2010 を終了してエラーの出た自作ライブラリのプロジェクトファイル(image-io.vcxproj)を開いてみたところ、

     

     <ItemGroup>
      <ProjectReference Include="..\image-core\image-core.vcxproj">
       <Project>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}</Project><br/>
        <ReferenceOutputAssembly>false</ReferenceOutputAssembly><br/>
      </ProjectReference><br/>
      <ProjectReference Include="image-io.vcxproj"><br/>
       <Project>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}</Project><br/>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly><br/>
      </ProjectReference><br/>
     </ItemGroup>
    

     

    こんな感じで自分自身のプロジェクト image-io.vcxproj への参照が見つかりました。

    後半のProjectReferenceタグ4行を削除したところ、無事ビルドが通るようになりました。

     

    どうやらプロジェクトファイルの変換時に不具合があるようですね…。

     

    • 回答としてマーク 電柱一家 2010年10月18日 2:36
    2010年10月16日 18:47

すべての返信

  • *.suoを消してみてはどうでしょう。
    この手の自動認識系はあまりあてにできません(vv;)。

    2010年10月15日 5:04
  • こんばんは。

    私の方でも VisualStudio2005 で作成した自作ライブラリのプロジェクトを VisualStudio2010 で読み込んだところ、同じ現象に遭遇しました。

    調べてみたところ、こちらの記事が参考になりました。

    http://connect.microsoft.com/VisualStudio/feedback/details/522854/project-converted-from-vs2005-gets-msb4006-circular-dependency-error-on-build

    プロジェクトファイルに自分自身への参照ができてしまっているそうです。

    私の場合、いったん VisualStudio2010 を終了してエラーの出た自作ライブラリのプロジェクトファイル(image-io.vcxproj)を開いてみたところ、

     

     <ItemGroup>
      <ProjectReference Include="..\image-core\image-core.vcxproj">
       <Project>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}</Project><br/>
        <ReferenceOutputAssembly>false</ReferenceOutputAssembly><br/>
      </ProjectReference><br/>
      <ProjectReference Include="image-io.vcxproj"><br/>
       <Project>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}</Project><br/>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly><br/>
      </ProjectReference><br/>
     </ItemGroup>
    

     

    こんな感じで自分自身のプロジェクト image-io.vcxproj への参照が見つかりました。

    後半のProjectReferenceタグ4行を削除したところ、無事ビルドが通るようになりました。

     

    どうやらプロジェクトファイルの変換時に不具合があるようですね…。

     

    • 回答としてマーク 電柱一家 2010年10月18日 2:36
    2010年10月16日 18:47
  • 返答ありがとうございます。

    一応 *.suo や *.ipch 等も全部削除してやってみたのですが、同じ結果になってしまいました。

    検索したところ海外のフォーラムでも似たような報告があったので、同じ結果でもいろいろな原因が絡んでいるようです。


    電柱一家
    2010年10月18日 2:33
  • 返答ありがとうございます。

    .vcxproj ファイルを見たところ、確かに自己参照を行っており削除しましたところ無事コンパイルが通りました。

    なかなか気づきにくいバグでしたので、大変助かりました。


    電柱一家
    2010年10月18日 2:37