2012-02-17 19 views
3

CMSが正常に動作するためには、wwwルートの下の仮想ディレクトリに展開して管理するWebサイトにアクセスできるようにする必要があります(注:CMS = N2CMS )。 Visual Studio 'Publish To Web'を使用している場合は、すべて問題ありません。しかし、msbuildコマンドラインでパッケージを生成し、そのバージョンを公開すると、仮想ディレクトリは仮想アプリケーションに変換されます。MsDeploy仮想ディレクトリが展開時に仮想アプリケーションに変換される

IIS Webアプリケーション( 'exampleapp')の下に仮想ディレクトリ '/ n2'を設定し、パッケージ/公開Web設定(IIS Webサイト/アプリケーション名移行先サーバー)をVisual Studioのプロジェクト内に作成します。

展開パッケージを生成するには:

msbuild.exe myproject.csproj /T:Package 

これは(標準のMSBuild /場合msdeployターゲット)を実行する場合msdeployコマンドラインバッチファイルと一緒に私のコードのzip形式のパッケージを生成します。

生成SetParameters.xmlには、次のものが含まれています

<?xml version="1.0" encoding="utf-8"?> 
<parameters> 
    <setParameter name="IIS Web Application Name" value="exampleapp/n2" /> 
</parameters> 

生成SourceManifest.xmlは、以下の

<?xml version="1.0" encoding="utf-8"?> 
<sitemanifest> 
    <IisApp path="C:\...shortened-path...\PackageTmp" managedRuntimeVersion="v4.0" /> 
    <setAcl path="C:\...shortened-path...\PackageTmp" setAclResourceType="Directory" /> 
    <setAcl path="C:\...shortened-path...\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" /> 
</sitemanifest> 

誰が仮想ディレクトリがに変換される理由の手掛かりを持って含まれています仮想アプリケーションですか? Microsoft.Web.Publishing.targetsファイルで

答えて

4

、trueにDeployAsIisAppのデフォルト:

< DeployAsIisApp条件= " '$(DeployAsIisApp')== ''" >真</DeployAsIisApp >

プロジェクトファイルの適切なPropertyGroup要素に追加するか、プロジェクトフォルダの.wpp.targetsファイルに追加することで、falseに上書きすることができます。 IISアプリケーションとしてそれをマークせずに仮想ディレクトリにWebアプリケーションプロジェクト(WAP)を発行するときに、プロジェクトファイルを編集するには、私が(csprojで)展開パラメータの以下の組み合わせで成功を持っている

http://msdn.microsoft.com/en-us/library/ff398069.aspx

+0

うーん、動作するようですが、今場合msdeployは、指定されたデプロイdirはどこかに存在する仮想ディレクトリが実際にあることを「取得」しません。 ( エラー: 'setAcl'プロバイダが物理パスで使用される場合、 'setAclUser'設定の値を指定する必要があります。 )。 –

+1

私はまた< IncludeSetAclProviderOnDestination条件=「『$(IncludeSetAclProviderOnDestination』)== 『』」ターゲットファイル内>真</IncludeSetAclProviderOnDestination >を参照してくださいので、私はあなたがそれをオフに切り替えることができ推測しています。 – tdykstra

+0

私の.csprojでIncludeSetAclProviderOnDestinationをfalseに設定すると、エラーはなくなります。しかし、このエラーは、既定でDeployAsIisAppをFalseに設定すると、SetParameters.xmlの "IIS Web Application Name"に(ローカルの)ファイルパス(サーバー上に存在しない)が付いていることに起因すると考えられます。これをサーバーパスに修正すると、問題が解決します(IncludeSetAclProviderOnDestination = False)。 –

3

見ます:falseにDeployAsIisAppを設定するとき

<DeployOnBuild>True</DeployOnBuild> 
<DeployAsIisApp>False</DeployAsIisApp> 
<DeployIisAppPhysicalPath>MyWebSite/MyVirtualDirectory</DeployIisAppPhysicalPath> 
関連する問題