Что это за исключение MSDeploy NullReferenceException? - PullRequest
1 голос
/ 14 февраля 2012

Когда я запускаю MSDeploy из сценария сборки, я получаю это исключение NullReferenceException.Самое смешное, что проект разворачивается.Это сводит меня с ума.Примечание. Это проект веб-сайта, а не проект веб-приложения.

Я использую его в файле целей сборки:

    <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 ]

2 голосов
/ 28 марта 2012

Попробуйте использовать ContinueOnError = "true" на элементах MSDeploy в качестве следующего кода:

<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>
1 голос
/ 23 мая 2012

У меня была такая же проблема; и был в состоянии решить проблему, используя исправление, описанное здесь http://forums.iis.net/p/1187159/2016131.aspx#2016131

Для меня использование задачи VSMSDeploy не вариант, так как мы запускаем серверы x64 и веб-приложения. Visual Studio работает только с версиями msbuild и msdeploy для x86, поэтому VSMSDeploy работает только для серверов и сайтов x86. Я использую провайдер appHostConfig для хранения конфигурации IIS, а appHostConfig не может синхронизировать сайт x64 с экземпляром msdeploy x86.

0 голосов
/ 11 июня 2012

Мне удалось заставить развертывание работать с Web Deploy Project .

0 голосов
/ 16 февраля 2012

Я просто столкнулся с тем же. Я не смог понять, в чем проблема, но я смог обойти ее, используя VSMSDeploy вместо MSDeploy. Обе задачи находятся в одной и той же DLL, и есть примеры использования в Microsoft.Web.Publishing.targets.

...