9

私のソリューションにはいくつかの .net プロジェクトが含まれており、そのうちの 1 つは公開しようとしている ASP.NET MVC プロジェクトです。x32 と x64 のすべての構成が正しく設定されており、いずれも AnyCPU に設定されていません。

問題:

プロジェクトを 32 ビットとして発行しようとすると、すべて問題ありませんが、64 ビット モードで発行しようとすると、次のエラーで失敗します。

Could not load file or assembly "ProjectA" or one of its dependencies. 
An attempt was made to load a program with an incorrect format.

私が試して気づいたこと:

VS 2013 以降、MSbuild は VS の一部であり、以前のように .NET Framework の一部ではありません。x64 モードでソリューションを単純にビルドすると、32 ビットの msbuild"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"が最初に実行され、64 ビットの msbuild が起動されます"C:\Program Files (x86)\MSBuild\12.0\Bin\amd64\MSBuild.exe"。したがって、パブリッシュなしの通常のビルドは問題なく動作します。

しかし、私が選択publishした場合、32 ビットの MSbuild が最初に実行され、次にc:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe64 ビットではなく 32 ビットの aspnet_compiler が起動され、上記のエラーが発生します。

これまでに見つけた唯一の回避策は、

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe"

64ビットのもので

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe"

質問:

私の問題に対するより良い(法的)解決策はありますか?これはVSのバグのようです

4

3 に答える 3

1

私はまったく同じ問題を抱えています。

パブリッシュを開始する前に、BAT ファイルを作成して EXE を置き換えることができます。または、aspnet_compiler.exe を直接呼び出して UI なしで公開する BAT を作成することもできます :-)

于 2013-11-14T08:48:54.730 に答える
1

この行を発行構成の PropertyGroup ノード内の .pubxml ファイル (Tree Solution\Project\Properties\PublishProfiles\.pubxml) に追加します。例えば:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AspnetCompilerPath>$(windir)\Microsoft.NET\Framework64\v4.0.30319</AspnetCompilerPath>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>C:\Pub\FTS_Service</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>True</EnableUpdateable>
    <DebugSymbols>False</DebugSymbols>
    <WDPMergeOption>DonotMerge</WDPMergeOption>
  </PropertyGroup>
</Project>

于 2014-09-25T07:28:24.327 に答える