12

私はvs2008でws2008 x64を持っています。

vsをx64に設定して(64ビットdllがあるため)コンパイルを実行すると、sgenは次のように述べています

正しくない形式のアセンブリをロードしようとしました

C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ からの VS takse sgen

C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\x64\ から取得する必要があると思います

sgen の 64 ビット バージョンを取得して C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ に配置すると (32 ビット バージョンを置き換えます)。コンパイルできました。

vs. の下で sgen の正しいバージョンを指すにはどうすればよいですか?

1 つのプロジェクトのソリューション プラットフォームを構成して、正しい sgen (x86 から 32 ビットおよび x64 から 64 ビットの sgen バージョン) を指すようにすることはできますか?

4

4 に答える 4

4

これは役に立ちますか?彼がポスト ビルドとして sgenを使用しているセクションを見てください。

結果として、VS プロジェクト プロパティの [ビルド イベント] タブで、SGen コマンドをカスタム ビルド後イベントとして追加する必要があります。

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sgen.exe" /force /assembly:"$(TargetPath)" /compiler:/keycontainer:VS_KEY_5EFB7881D71082EDCF85DBBFCD748B9A /compiler:/delaysign-

于 2010-08-11T21:01:01.630 に答える
3

これが私が見つけた最良の答えです:x64 sgenの条件付きビルド後イベントコマンド、MichaelHanesによるブログ投稿。

64ビットSGENがインストールされているかどうかを条件付きでチェックするビルド後のイベントを使用し、必要に応じて使用します。

REM Use the 64-bit sgen from the Win 2008 and 
REM .NET 3.5 SDK in a 64-bit dev environment
REM ProgramFiles variable is set to 
REM 'Program Files (x86)' in a x64 environment 
REM Processor_Architecture variable returns x86 
REM in both an x86 and x64 environment within VS.

if /I "%ProgramFiles%" == "C:\Program Files" (
set SgenToolPath="C:\Program Files\Microsoft
SDKs\Windows\v6.0A\Bin\sgen.exe"
) else (
set SgenToolPath="C:\Program Files\Microsoft
SDKs\Windows\v6.1\Bin\x64\sgen.exe"
)

%SgenToolPath% /compiler:"\"/keyfile:$(ProjectDir)
MyKeyFile.snk"\" /force "$(TargetPath)"

これは、特定のVisualStudioプロジェクトの[オン]の[シリアル化アセンブリの生成]ドロップダウン設定を置き換えることを目的としています。

于 2010-08-17T18:10:15.770 に答える
2

ビルド時に有効な環境変数をダンプするためだけに、ビルド前のアクションを少し追加します。

vcvarsall.bat を確認し、それに従って、さまざまなホスト/ビルド プラットフォーム コンボの他のバットをロードします。

devenv プロセスの実際のビット数を確認します (たとえば、プロセス エクスプローラーを使用します)。

于 2010-08-12T12:49:31.890 に答える