11

いくつかの ACL を設定するカスタム .wpp.targets ファイルがあります。Visual Studio 内からビルドすると、生成されるソース マニフェスト ファイルにカスタム ACL が含まれます。

ビルド サーバーから実行すると、機能しません。生成されたファイルには、.wpp.targets ファイルからの ACL が含まれていません。

ビルド サーバーには .net Framework 4 がインストールされ、Web デプロイがあり、正しい Microsoft.Web.Publishing.targets ファイルがあります。「AfterAddIisSettingAndFileContentsToSourceManifest」プロパティが false であると思われるサーバー上のビルドからの診断をいくつか含めました。私はmsbuildに慣れていません。誰でも助けることができますか?

編集:

Microsoft.Web.Publishing.targets に次の行があることに気付きました。

  <PropertyGroup>
    <WebPublishPipelineCustomizeTargetFile Condition="'$(WebPublishPipelineCustomizeTargetFile)'==''">$(WebPublishPipelineProjectDirectory)\$(WebPublishPipelineProjectName).wpp.targets</WebPublishPipelineCustomizeTargetFile>
  </PropertyGroup>

  <Import Project="$(WebPublishPipelineCustomizeTargetFile)" Condition="Exists($(WebPublishPipelineCustomizeTargetFile))"/>

ただし、msbuild からの出力には webpublishpipeline に関するものは何もありません。私の .wpp.targets ファイルも見られていないと思います!

ターゲット ファイル:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"  ToolsVersion="4.0">
    <!--
    ********************************************************************
     Task Custom ACLs 
    ********************************************************************
    -->
    <PropertyGroup>
         <!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action to also set ACLs-->
           <AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
                $(AfterAddIisSettingAndFileContentsToSourceManifest);
                SetCustomACLs;
            </AfterAddIisSettingAndFileContentsToSourceManifest>
        </PropertyGroup>

        <Target Name="SetCustomACLs">
            <Message Text="Adding Custom ACls" />
            <ItemGroup>
                <!--Make sure the by default Networkservice/AppPoolIdentity have write permission to the root-->
                <MsDeploySourceManifest Include="setAcl" >
                    <Path>$(_MSDeployDirPath_FullPath)\bin\ABCpdf8-64.dll</Path>
                    <setAclAccess>ReadAndExecute</setAclAccess>
                    <setAclResourceType>File</setAclResourceType>
                    <AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
                </MsDeploySourceManifest>
            </ItemGroup>
        </Target>
    </Project>

msbuild の出力:

[GenerateMsdeployManifestFiles] CallTarget
    [22:13:44]: [CallTarget] Target "PipelinePreDeployCopyAllFilesToOneFolder" skipped. Previously built successfully.
    [22:13:44]: [CallTarget] Target "GenerateMsDeployManifestSettings" skipped. Previously built successfully.
    [22:13:44]: [CallTarget] Target "PipelinePreDeployCopyAllFilesToOneFolder" skipped. Previously built successfully.
    [22:13:44]: [CallTarget] Target "GenerateMsDeployManifestSettings" skipped. Previously built successfully.
    [22:13:44]: [CallTarget] Target "AddIis7ToSourceManifest" skipped, due to false condition; ($(_DeploymentUseIis) And ($(LocalIisVersion) >= '7')) was evaluated as (False And (7 >= '7')).
    [22:13:44]: [CallTarget] Target "AddIis6ToSourceManifest" skipped, due to false condition; ($(_DeploymentUseIis) And ($(LocalIisVersion) < '7') ) was evaluated as (False And (7 < '7') ).
    [22:13:44]: [CallTarget] AddContentPathToSourceManifest
    [22:13:44]: [AddContentPathToSourceManifest] Using "GetDeployManagedRuntimeVersion" task from assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll".
    [22:13:44]: [AddContentPathToSourceManifest] Task "CallTarget" skipped, due to false condition; ('$(AfterAddContentPathToSourceManifest)' != '') was evaluated as ('' != '').
    [22:13:44]: [CallTarget] AddIisSettingAndFileContentsToSourceManifest
    [22:13:44]: [AddIisSettingAndFileContentsToSourceManifest] Task "CallTarget" skipped, due to false condition; ('$(AfterAddIisSettingAndFileContentsToSourceManifest)' != '') was evaluated as ('' != '').
    [22:13:44]: [CallTarget] Target "CollectDatabasesToPublish" skipped, due to false condition; ($(PublishDatabases)) was evaluated as (false).
    [22:13:44]: [CallTarget] AddDatabasesToSourceManifest
    [22:13:44]: [AddDatabasesToSourceManifest] Task "CallTarget" skipped, due to false condition; ('$(AfterAddDatabasesToSourceManifest)' != '') was evaluated as ('' != '').
    [22:13:44]: [CallTarget] WriteItemsToSourceManifest
    [22:13:44]: [WriteItemsToSourceManifest] Using "ExportManifestFile" task from assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll".
    [22:13:44]: [WriteItemsToSourceManifest] Task "CallTarget" skipped, due to false condition; ('$(AfterWriteItemsToSourceManifest)' != '') was evaluated as ('' != '').
4

1 に答える 1

5

パラメータ WebPublishPipelineProjectName を変更できます。MSBuild は、既定で (MSBuildProject).wpp.targets (MyProject.wpp.targets など) を見つけようとします。/p:WebPublishPipelineProjectName=MyProject を設定してみてください

これがお役に立てば幸いです

于 2011-11-15T17:12:24.267 に答える