Msbuild просто создает пакет, но не использует его при использовании профиля публикации. Зачем?

MSBuild действительно мне нравится. Недавно я пытаюсь использовать различные возможности для создания и развертывания из командной строки. Однако я испытываю некоторое, казалось бы, странное поведение, когда передаю профиль публикации в MSBuild.

Вот пример того, что я только что сделал:

В настоящее время я развертываю локальный IIS с такой командой, как:

msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj
    /p:Configuration=Release;
    Platform=AnyCpu;
    DeployOnBuild=true;
    DeployTarget=MSDeployPublish;
    MSDeployServiceURL="localhost";
    DeployIisAppPath="DeployApp/DeployThis";
    MSDeployPublishMethod=InProc;
    Username=thisIsNotActuallyMyUsername;
    password=guesswhat;
    AllowUntrustedCertificate=true

И это работает! После этого он успешно развернут и я могу вызвать его в браузере.

Однако, поскольку Visual Studio дает нам возможность использовать профили публикации, я хотел попробовать это в сочетании с командной строкой MSBuild и попробовал следующую команду:

msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj
    /p:DeployOnBuild=true;
    AllowUntrustedCertificate=true;
    PublishProfile=ReleaseLocal

ReleaseLocal - это профиль, который я создал в Visual Studio, и выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>localhost</MSDeployServiceURL>
    <DeployIisAppPath>DeployApp/DeployThis</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>InProc</MSDeployPublishMethod>
    <EnableMSDeployBackup>False</EnableMSDeployBackup>
    <UserName />
    <_SavePWD>False</_SavePWD>
    <PublishDatabaseSettings>
      <Objects xmlns="">
        <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
          <Destination Path="Data Source=.\SQLEXPRESS;Initial Catalog=HorstDataProductive;User ID=sa;Password=GuessWhat" />
          <Object Type="DbDacFx">
            <PreSource Path="Data Source=.\SQLEXPRESS;Initial Catalog=HorstData;User ID=sa;Password=GuessWhat" includeData="False" />
            <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
          </Object>
          <UpdateFrom Type="Web.Config">
            <Source MatchValue="Data Source=.\SQLEXPRESS;Initial Catalog=HorstData;User ID=sa;Password=GuessWhat" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
          </UpdateFrom>
        </ObjectGroup>
      </Objects>
    </PublishDatabaseSettings>
  </PropertyGroup>
  <ItemGroup>
    <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String">
      <ParameterValue>Data Source=.\SQLEXPRESS;Initial Catalog=HorstDataProductive;User ID=sa;Password=GuessWhat</ParameterValue>
    </MSDeployParameterValue>
  </ItemGroup>
</Project>

Как вы можете видеть, у меня есть дополнительная замена строки подключения, которую я хочу проверить.

Итак, я выполняю последнюю команду MSBuild, которую я вам показал, и она выполняется без каких-либо ошибок. Вместо этого он говорит, что задача развертывания сети прошла успешно и что пакет был создан по определенному пути. Теперь это действительно правильный пакет. Когда я импортирую это вручную в свой IIS, это результат, который я ожидаю, также была выполнена замена строки подключения.

Но я не понимаю, почему на самом деле это просто создание пакета, но не развертывание его за один проход, как в моей первой команде.

Может кто-нибудь объяснить? (Или даже лучше, что мне нужно сделать, чтобы он сразу же разворачивал этот пакет)

Ответ 2

Похоже, вам не хватает цели развертывания.. он получил всю необходимую информацию, но не знает, чего вы хотите. Попробуйте это;

msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj     /Р: DeployOnBuild = TRUE; DeployTarget = MSDeployPublish; AllowUntrustedCertificate = истина; PublishProfile = ReleaseLocal