1

ドライバー プロジェクトを WDK8 および Visual Studio 2012 に移行する過程で、ドライバー パッケージの出力ディレクトリ構成に関する小さな問題に遭遇しました。幸いなことに、標準のプロジェクト テンプレートと次の手順を使用して簡単に再現できます。

  1. VS 2012 を開き、スタート ページから [新しいプロジェクト] を選択します。
  2. [新しいプロジェクト] ダイアログで、[インストール済み] | [プロジェクト] を選択します。テンプレート | VisualC++ | Windows ドライバー | ネットワーキング | フィルター ドライバー: NDIS。場所を C:\Projects に変更し、[ソリューションのディレクトリを作成] を選択して、[OK] をクリックします。
  3. 標準ツールバーの [ソリューション プラットフォーム] ドロップダウンで [x64] を選択します。
  4. ソリューション エクスプローラーで、両方のプロジェクトを選択し、右クリックして、ショートカット メニューから [プロパティ] を選択します。
  5. [構成] ドロップダウンで [すべての構成] を選択し、[構成プロパティ] を設定します。一般 | ディレクトリを "$(SolutionDir)bin\$(Platform)\$(ConfigurationName)\" に出力して、ソリューション ディレクトリの bin サブディレクトリにすべての出力を配置し、[OK] をクリックします。この時点で、以下をdir \Projects\ndislsf1返します。

         C:\Projects\ndislwf1 のディレクトリ
    
    
    04/25/2013  09:42 AM    <DIR>          .
    04/25/2013  09:42 AM    <DIR>          ..
    04/25/2013  09:42 AM    <DIR>          ndislwf1
    04/25/2013  09:42 AM    <DIR>          ndislwf1 Package
    04/25/2013  09:46 AM        14,811,136 ndislwf1.sdf
    04/25/2013  09:42 AM             7,627 ndislwf1.sln
                   2 File(s)     14,818,763 bytes
                   4 Dir(s)   6,701,723,648 bytes free
    
  6. ここで、F6 キーを押してソリューションをビルドします

    これまでのところすべて順調です。dir \Projects\ndislsf1 は、bin ディレクトリが作成されたことを示しており、さらに調査すると、すべての出力ファイルがそこに正しく配置されていることがわかります。

         C:\Projects\ndislwf1 のディレクトリ
    
    
    04/25/2013  09:47 AM    <DIR>          .
    04/25/2013  09:47 AM    <DIR>          ..
    04/25/2013  09:47 AM    <DIR>          bin
    04/25/2013  09:47 AM    <DIR>          ndislwf1
    04/25/2013  09:47 AM    <DIR>          ndislwf1 Package
    04/25/2013  09:46 AM        14,811,136 ndislwf1.sdf
    04/25/2013  09:42 AM             7,627 ndislwf1.sln
                   2 File(s)     14,818,763 bytes
                   5 Dir(s)   6,695,829,504 bytes free
    
  7. 標準ツールバーの [ソリューション構成] ドロップダウンで [Vista リリース] を選択し、もう一度 F6 キーを押してソリューションをビルドします。

    C:\Projects\ndislwf1 のディレクトリ
    
    2013 年 4 月 25 日午前 9 時 51 分。
    2013/04/25 09:51 午前 ..
    2013/04/25 09:47 AM ビン
    2013/04/25 09:47 午前 ndislwf1
    2013/04/25 09:47 AM ndislwf1 パッケージ
    2013/04/25 09:46 AM 14,811,136 ndislwf1.sdf
    2013/04/25 09:42 AM 7,627 ndislwf1.sln
    2013/04/25 09:51 AM x64
                   2 ファイル 14,818,763 バイト
                   6 ディレクトリ 6,689,509,376 バイト空き
    

残念ながら、Vista リリースの出力は bin サブディレクトリではなく x64 に書き込まれます。実際、他のすべてのプロジェクトの出力も bin サブディレクトリを無視し、x64 で書き込みます。

他の誰かがこの問題を経験したことがありますか? もしそうなら、既知の回避策や修正が予想されますか?

4

1 に答える 1

4

すべてではありませんが、ほとんどのビルド構成で同じ問題が発生しました (Vista Debug Win32 は何らかの理由で正しく出力されました)。これが私がそれを回避した/解決した方法です:

  • 別のエディターで nnn_package.vcxproj ファイルを開きました。

  • 上記のビルド構成 (vista|debug|win32) のエントリは、「PackageDir」$(OutDir)nnn_package を設定する「PropertyGroup」エントリによって他のすべての構成エントリから分離されて、それ自体で配置されていることに注意してください。 /パッケージディレクトリ」

(" を以下/以上に置き換えます)

  • このセクションを -after- すべてのビルド構成エントリに移動して保存しました。

  • VS2012 でソリューションを再度開き、構成名とプラットフォームに関係なく、すべてのパッケージが正しいフォルダーに出力されるようになりました。

お役に立てれば。

于 2013-05-05T22:16:02.713 に答える