6

ASP.NET MVC で動作する Web 配置プロジェクトを持っている人はいますか? 「デプロイされた」プロジェクトを開くと、MVC が必要とする多くのファイルが欠落しており、プロジェクトに欠落しているすべてのファイルをサーバーに発行するのが困難になります。

または... MVC アプリの Web.Config を変更する Web 配置プロジェクトよりも良い方法はありますか? アップロードする前に更新する必要がある違い (SMTP と接続文字列) があり、Web 配置プロジェクトが正しい方法のようです。

いつもありがとう!

更新:少なくとも global.asax、global.asax.cs、および default.aspx.cs がありません。

更新 2:公開すると、このエラーが発生します。Could not load type 'AppNamespace._Default'.

4

4 に答える 4

5

MVC アプリを使用して展開プロジェクトをまだセットアップしていませんが、Scott Hanselman によって概説されているこの手法を使用しており、うまく機能しています。

複数の構成ファイル環境の管理

于 2009-02-24T11:40:49.527 に答える
1

リストした3つの特定のファイルはすべて、ASP.NETMVCWebプロジェクトによって生成されたバイナリにコンパイルされます。.csprojを開くと、次のように表示されます。

<Compile Include="Global.asax.cs">
  <DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Default.aspx.cs">
  <DependentUpon>Default.aspx</DependentUpon>
  <SubType>ASPXCodeBehind</SubType>
</Compile>

Reflectorなどのツールでバイナリを開くと、クラスが表示されます。したがって、それらをデプロイする必要はありません。

MVC .csprojのこれらのMSBuildステップは、Web配置プロジェクトが行うこと(つまり、サイトの単一のバイナリをコンパイルすること)の 一部を冗長にします。

トークンの置き換えについては、Deploymentプロジェクトを保持するか、関連するMSBuildsステップを.wdprojファイルから.csprojファイルにコピーすることができます。これは私がやったことではありませんが、まもなく自分で試してみます。

于 2009-02-26T20:02:26.623 に答える
0

Web 配置プロジェクトを使用して、IIS6 に正常に配置しました。最初に Server 2003 にデプロイする際に問題がありましたが、私の場合は実際にはステージ環境の問題でした。最初にローカル IIS にデプロイして、それがビルドの問題なのか環境の問題なのかを確認しました。config-replacement は使用しませんでした。

これは私のビルドスクリプトです:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe "D:\Projekte\NiceProjectName\source\NiceProjectName_Build\NiceProjectName_Build.wdproj" /t:Build /p:Configuration=Release 

これが私のwdpです:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.21022</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{E5E14CEB-0BCD-4203-9A5A-34ABA9C717EA}</ProjectGuid>
    <SourceWebPhysicalPath>..\NiceProjectName</SourceWebPhysicalPath>
    <SourceWebProject>{3E632DB6-6DB3-4BD0-8CCA-12DE67165B48}|NiceProjectName\NiceProjectName.csproj</SourceWebProject>
    <SourceWebVirtualPath>/NiceProjectName.csproj</SourceWebVirtualPath>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>.\Debug</OutputPath>
    <EnableUpdateable>true</EnableUpdateable>
    <UseMerge>true</UseMerge>
    <SingleAssemblyName>NiceProjectName_Build</SingleAssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugSymbols>false</DebugSymbols>
    <OutputPath>..\..\deploy</OutputPath>
    <EnableUpdateable>false</EnableUpdateable>
    <UseMerge>true</UseMerge>
    <SingleAssemblyName>NiceProjectName</SingleAssemblyName>
  </PropertyGroup>
  <ItemGroup>
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v9.0\Microsoft.WebDeployment.targets" />
</Project>
于 2009-03-03T13:24:31.530 に答える
0

私はそれが私のために働いていることがわかりました。

不足しているファイルがあると言うとき、それは System.Web.Mvc ファイルなどについて話しているのですか? Web アプリケーションで、これらの参照がローカルにコピーするように設定されていることを確認する必要があります。

于 2009-02-24T16:30:50.203 に答える