Visual Studio Professional 2017 ビルドエラーの原因を調べたい

aj-8521 0 評価のポイント
2024-10-16T01:46:52.3566667+00:00

MSB3721 は説明のないエラーです。単に「発行されたコマンドが失敗した」という意味で、理由は示されません。そこで、コマンドプロンプトまたは PowerShell コンソールから、失敗したコマンドをコマンドライン形式で再発行したいのですが、方法が分かりません。もし情報あれば教えてください。

Visual Studio
Visual Studio
Windows、Web、モバイル デバイス用のアプリケーションを構築するための統合開発ツールの Microsoft スイートのファミリ。
88 件の質問
{count} 件の投票

3 件の回答

並べ替え方法: 最も役に立つ
  1. aj-8521 0 評価のポイント
    2024-10-16T03:31:27.0166667+00:00

    エラーの原因を知りたいのではなく、エラーの原因を調べるための方法に関して質問しています。文章を正しく読解してください。

    0 件のコメント コメントはありません

  2. gekka 9,666 評価のポイント MVP
    2024-10-16T09:30:08.9133333+00:00

    なんでCUDAのバージョンを隠しているのかわかりませんが、

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA xxx.targets 799

    に書かれているtargetsファイルの799行目で、どのタスクが何をやっているか調べる必要があります。

    バージョン隠されているのではっきりしませんが、おそらくCudaBuildとCudaBuildCoreタスクだろうと推測して。
    VisualStudioから呼び出した開発者用コマンドプロンプトをプロジェクトのあるディレクトリをカレントにして以下のコマンドで実行してやれば、そのタスクをビルドできると思う。

    msbuild -property:Configuration=Release -property:Platform=X64  -target:Clean;CudaBuild;CudaBuildCore  -verbosity:diag
    

    タスク名が判らないなら、targetをRebuildにして、そのnvcc.exeを実行しているタスク名を調べてください。

    msbuild -property:Configuration=Release -property:Platform=X64  -target;Rebuild -verbosity:diag 
    

    それよりも、C++のプロジェクトファイルにであるvcxprojを書き換えて、CudaCompile.AdditionalOptionsにverboseを追加してビルドしたほうが簡単だと思う。

    <?xml version="1.0" encoding="utf-8"?>
    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <!-- 省略 -->
      <ItemGroup>
        <CudaCompile Include="CUDATest.cu">
    		<FileType>Document</FileType>
    		
    		<ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
    		<ExcludedFromBuild Condition="'$(Platform)'=='x64'">false</ExcludedFromBuild>
    
            <AdditionalOptions>--verbose</AdditionalOptions> <!-- こいつでnvcc.exeのコマンドラインにパラメーターを追加してやる -->
        </CudaCompile>
      </ItemGroup>
    
      <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
      <ImportGroup Label="ExtensionTargets">
        <Import Project="$(ProgramFiles) (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 12.6.targets" />
      </ImportGroup>
    </Project>
    
    0 件のコメント コメントはありません

  3. Raina Zhao - MSFT 2,855 評価のポイント Microsoft ベンダー
    2024-10-16T10:03:50.7133333+00:00

    aj-8521さん、こんにちは。

    Microsoft Q&A フォーラムにご投稿くださいましてありがとうございます。

    おっしゃる通り、このエラーは単に「コマンドが失敗した」ということを表示し、詳しい情報はありません。

    エラーの原因を突き止めるには、まずエラーコードの詳細を調べる必要があります。

    MSB3721: コマンド "command" がエラー コード "error-code" で終了しましたをご参照ください。

    このエラーは、ビルド プロセスで起動されたコマンドが 0 以外のエラー コードで終了した場合に発生します。

    エラー情報を把握した上で、コード1の意味や終了の原因について調査する必要があります。

    上記のドキュメントに、トラブルシューティングの手順が記載されてあります:

    Visual Studio では、[ツール]>[オプション]、[プロジェクトおよびソリューション]、[ビルドして実行] で詳細を変更できます。

    [ツール]>[オプション]>[プロジェクトおよびソリューション]>[ビルドして実行] で「MSBuildプロジェクトビルドの出力の詳細」から「詳細」を選んでプロジェクトをリビルドしてください。VSの出力ウィンドウに詳しい情報が表示されます。

    また、MSB3721はMSBuildエラーで、ビルドプロセスに関連しています。そのため、ビルドプロセスを確認する必要があります。具体的には、プロジェクトの設定、使用されているツールキット、参照パッケージ、含まれているファイル、コードなどを確認してください。

    上記のいずれにも心当たりがない場合、上記のドキュメントを参照し、発生原因を絞って調べてみてください。

    一方、CMD/PSでもコマンドを再発行してみますね。「Developer Command Prompt for Visual Studio Professional 2017」を試したことがありますか。「Developer Command Prompt for Visual Studio Professional 2017」で、「ビルド」コマンド(MSBuild コマンド ライン リファレンス)を実行すると、同じ結果が出る可能性があります。

    どうぞよろしくお願いいたします。


    役に立った回答には「回答を受け入れる」と「いいね!」を押してください。さらに質問がある場合は、「コメント」を追加してください。注意:Q&Aからメール通知を受け取りたい場合には、ドキュメントの手順に基づき、メール通知を有効にしてください。

    0 件のコメント コメントはありません

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。