0

VBC と NAnt を WinForms で呼び出す以前の私の質問に対して、私はこれを述べるより良い方法を考え出しました。

vbproj ファイル内には、次のものがあります。

<ItemGroup>
  <None Include="My Project\Settings.settings">
    <Generator>SettingsSingleFileGenerator</Generator>
    <CustomToolNamespace>My</CustomToolNamespace>
    <LastGenOutput>Settings.Designer.vb</LastGenOutput>
  </None>
</ItemGroup>
<ItemGroup>
  <Content Include="My Project\Application.myapp">
    <Generator>MyApplicationCodeGenerator</Generator>
    <LastGenOutput>Application.Designer.vb</LastGenOutput>
  </Content>
</ItemGroup>

Visual Studio (Debug Verbosity を Normal に設定) 内からビルドを実行すると、生成される行の 1 つが次のようになります。

Target CoreCompile:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe ...

これには、vbc.exe の実行に必要なすべての設定が含まれています。ただし、Visual Studio からその文字列を取得し、コマンド ラインで直接実行すると、次の結果が得られます。

... My Project\Settings.Designer.vb(67) : error BC30002: Type 'My.MySettings' is not defined.
        Friend ReadOnly Property Settings() As Global.My.MySettings
...\My Project\Settings.Designer.vb(69) : error BC30456: 'My' is not a member of '<Default>'.
                Return Global.My.MySettings.Default

上記のジェネレーターをコマンド ラインから実行するにはどうすればよいですか? または、vbc.exe がコマンド文字列を正しく実行するために必要な正しい一時ファイルを生成する呼び出しがどこかにありますか?

4

2 に答える 2

4

Visual Studio 内でビルド文字列を見る際の問題は、実際には vbc.exe を呼び出して Visual Studio からビルドしていないことです。ビジュアル スタジオでのすべてのビルドは、コマンド ライン コンパイラではなくインメモリ コンパイラで行われます (C# にも当てはまります)。

vbc.exe ... のようなコマンドは、実際には実行されない生成された文字列です。プロジェクトをビルドするための正しい文字列を見つけたい場合は、Visual Studio コマンド プロンプトから次のコードを実行します。

msbuild /v:diag myproject.vbproj

これにより、msbuild ログ ファイルが生成されます (かなり長くなるので、ファイルにパイプすることをお勧めします)。ビルドが完了したら、そのファイル内で vbc.exe を検索します。プロジェクトのビルドに必要な実際のコマンドラインが含まれています。

于 2009-01-07T03:11:41.520 に答える
0

今日はこの作業に時間を費やしました。「My」名前空間に関して vbc コンパイラを適切に動作させる方法について適切な答えを知りたいのですが、NAnt contrib (http://nantcontrib.sourceforge.ネット/)。

NAnt contrib を使用すると、.NET msbuild を使用してビルドできます。これにより、少なくとも自動ビルドや通知などをセットアップすることができました。私が望む詳細な制御はできませんが、目的には役立ちます。

このタスクのリファレンスは次のとおりです。

http://nantcontrib.sourceforge.net/release/latest/help/tasks/msbuild.html

そして、私のビルドスクリプトからの適切なスニペット:

<target name="build" depends="clean">
     <msbuild project="ProjectName.vbproj" />
</target>

CS アプリケーションでは NAnt をかなり使用しましたが、VB.NET アプリケーションではこれが初めてです。

于 2011-01-27T23:00:25.120 に答える