1

ビルドスクリプトからMSDeployを実行すると、このNullReferenceExceptionが発生します。面白いのは、プロジェクトがデプロイされることです。これは私を夢中にさせています。注:これはWebサイトプロジェクトであり、Webアプリケーションプロジェクトではありません。

ビルドターゲットファイルでこれを使用しています:

    <ItemGroup>     
        <DeploySource Include="DirPath">
            <Path>C:\TFS\MySiteBranch\PrecompiledWeb\Source</Path>
            <ComputerName>myComputer</ComputerName>
            <UserName>anAdminAccount</UserName>
            <Password>itsPassword</Password>
        </DeploySource>
    </ItemGroup>

    <ItemGroup>
        <TestDeployDest Include="DirPath">
            <Path>C:\TFS_Build\POC\Test</Path>
            <ComputerName>myComputer</ComputerName>
            <UserName>anAdminAccount</UserName>
            <Password>itsPassword</Password>
        </TestDeployDest>
    </ItemGroup>    

    <Target name="Deploy">

        <PropertyGroup>
            <WhatIf Condition="'$(WhatIf)'==''">false</WhatIf>
            <MSDeployPath Condition="'$(MSDeployPath)'==''">C:\Program Files\IIS\Microsoft Web Deploy V2</MSDeployPath>
        </PropertyGroup>

        <MSDeploy Condition="'@(TestDeployDest)'!=''"
            Whatif="$(WhatIf)"
            Verb="sync"
            Source="@(DeploySource)"
            Destination="@(TestDeployDest)"
            ExePath="$(MSDeployPath)"
        />
</target>

エラーは次のとおりです。

"C:\TFS\MySiteBranch\Source\source.csproj" (Deploy target) (1) ->
(Deploy target) ->  

C:\TFS\MySiteBranch\Source\Deploy.Targets(54,3): error MSB4018: The "MSDeploy" task failed unexpectedly.\r [C:\TFS\MySiteBranch\Source\source.csproj]

C:\TFS\MySiteBranch\Source\Deploy.Targets(54,3): error MSB4018: System.NullReferenceException: Object reference not set to an instance of an object.\r [C:\TFS\MySiteBranch\Source\source.csproj]

C:\TFS\MySiteBranch\Source\Deploy.Targets(54,3): error MSB4018:    at Microsoft.Web.Publishing.Tasks.Common.Utility.MsDeployEndOfExecuteMessage(Boolean bSuccess, String destType, String destRoot, TaskLoggingHelper Log)\r [C:\TFS\MySiteBranch\Source\source.csproj]

C:\TFS\MySiteBranch\Source\Deploy.Targets(54,3): error MSB4018:    at Microsoft.Web.Publishing.Tasks.MSDeploy.Execute()\r [C:\TFS\MySiteBranch\Source\source.csproj]

C:\TFS\MySiteBranch\Source\Deploy.Targets(54,3): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()\r [C:\TFS\MySiteBranch\Source\source.csproj]

C:\TFS\MySiteBranch\Source\Deploy.Targets(54,3): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutio

私が試すことができる何かのアイデアはありますか?

4

4 に答える 4

2

次のコードとして、MSDeploy要素でContinueOnError="true"を使用してみてください。

<ItemGroup>     
        <DeploySource Include="DirPath">
            <Path>C:\TFS\MySiteBranch\PrecompiledWeb\Source</Path>
            <ComputerName>myComputer</ComputerName>
            <UserName>anAdminAccount</UserName>
            <Password>itsPassword</Password>
        </DeploySource>
    </ItemGroup>

    <ItemGroup>
        <TestDeployDest Include="DirPath">
            <Path>C:\TFS_Build\POC\Test</Path>
            <ComputerName>myComputer</ComputerName>
            <UserName>anAdminAccount</UserName>
            <Password>itsPassword</Password>
        </TestDeployDest>
    </ItemGroup>    

    <Target name="Deploy">

        <PropertyGroup>
            <WhatIf Condition="'$(WhatIf)'==''">false</WhatIf>
            <MSDeployPath Condition="'$(MSDeployPath)'==''">C:\Program Files\IIS\Microsoft Web Deploy V2</MSDeployPath>
        </PropertyGroup>

        <MSDeploy ContinueOnError="true" Condition="'@(TestDeployDest)'!=''"
            Whatif="$(WhatIf)"
            Verb="sync"
            Source="@(DeploySource)"
            Destination="@(TestDeployDest)"
            ExePath="$(MSDeployPath)"
        />
</target>
于 2012-03-27T20:29:32.890 に答える
1

私も同じ問題を抱えていました。ここで説明されている修正を使用して対処することができました:http: //forums.iis.net/p/1187159/2016131.aspx#2016131

私にとって、VSMSDeployタスクを使用することはオプションではありません。これは、x64サーバーとWebアプリを実行しているためです。Visual Studioはx86バージョンのmsbuildとmsdeployのみを実行するため、VSMSDeployはx86サーバーとサイトでのみ機能します。appHostConfigプロバイダーを使用してIIS構成を保存していますが、appHostConfigはx64サイトをmsdeployのx86インスタンスに同期できません。

于 2012-05-23T06:31:35.280 に答える
0

私はちょうど同じことに遭遇しました。問題が何であるかを理解することはできませんでしたが、MSDeployの代わりにVSMSDeployを使用することで問題を回避することができました。両方のタスクは同じDLLにあり、Microsoft.Web.Publishing.targetsでそれを使用する例があります。

于 2012-02-16T17:29:44.003 に答える
0

WebDeployProjectでデプロイを機能させることができました。

于 2012-06-11T17:55:32.933 に答える