使用发布配置文件时,Msbuild只生成一个包,但不部署它。为什么?
MSBuild似乎真的很喜欢我。 最近,我正在尝试从命令行构建和部署不同的可能性。 然而,当我将发布配置文件传递给MSBuild时,我遇到了一些看似奇怪的行为 下面是我刚才做的一个例子: 目前,我使用如下命令部署到本地IIS:使用发布配置文件时,Msbuild只生成一个包,但不部署它。为什么?,msbuild,web-deployment,msdeploy,webdeploy,Msbuild,Web Deployment,Msdeploy,Webdeploy,MSBuild似乎真的很喜欢我。 最近,我正在尝试从命令行构建和部署不同的可能性。 然而,当我将发布配置文件传递给MSBuild时,我遇到了一些看似奇怪的行为 下面是我刚才做的一个例子: 目前,我使用如下命令部署到本地IIS: msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj /p:Configuration=Release; Platform=AnyC
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>
MSDeploy
释放
任何CPU
假的
本地服务器
DeployApp/DeployThis
真的
默认模式
假的
假的
数据源=。\SQLEXPRESS;初始目录=HorstDataProductive;用户ID=sa;密码=猜猜看
正如您所看到的,我有一些额外的连接字符串替换,我想测试
因此,我执行我向您展示的最后一个MSBuild命令,它执行时没有任何错误。相反,它表示web部署任务成功,并且已在特定路径中创建了一个包。现在,这实际上是正确的方案。当我在IIS中手动导入时,这是我预期的结果,连接字符串替换也已完成
但我不明白为什么它实际上只是创建包,而不是像我的第一个命令那样在一次运行中部署它
有人能解释一下吗?
(或者更好的是,我必须做些什么才能让它也立即部署该包)看起来您错过了部署目标。。它有所有必要的信息,但不知道你想要它做什么。试试这个 msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj /p:DeployOnBuild=true;DeployTarget=MSDeployPublish;AllowUntrustedCertificate=true;PublishProfile=ReleaseLocal
您需要指定VS版本 msbuild/p:DeployOnBuild=True/p:VisualStudioVersion=11.0/p:PublishProfile=Dev.pubxml
如果您使用的是“假”内部证书,请不要忘记允许使用不受信任的证书。fyi…/p:VisualStudioVersion=11.0适用于VS2012这似乎可以做到,感谢您的输入,尽管目前我在尝试此操作时遇到了一些其他错误,但我稍后会回来更新问题/答案我也有同样的问题,我的网站部署正在生成包,但不是已发布的网站,使用的命令是msbuild C:\Test.csproj/p:DeployOnBuild=true/p:PublishProfile=Test/p:VisualStudioVersion=10.0尝试添加DeployTarget=MSDeployPublish;选项DeployTarget=MSDeployPublish禁用“发布时使用”配置文件