我已成功通过从命令行运行MSBuild来发布到Windows Azure网站。
我执行的命令是:
msbuild.exe /p:DeployOnBuild=true /p:PublishProfile=azure /p:Password=thepassword /p:PublishDir=\\filesvr\DropLocation\ /p:VisualStudioVersion=12.0
当我从命令行从本地计算机运行此命令时,它会将部署推送到Windows Azure网站。我也可以从构建机器的命令行运行命令,它可以正常工作。在这两种情况下,我都是从网站项目的目录中运行命令。
然而,当我创建一个构建(基于默认模板)并添加参数
时/p:DeployOnBuild=true /p:PublishProfile=azure /p:Password=thepassword /p:PublishDir=\\filesvr\DropLocation\ /p:VisualStudioVersion=12.0
作为TFS构建的MSBuild参数,然后构建成功完成但不发布到Azure。它执行标准Web包并发布到本地文件系统。它似乎根本没有引用发布配置文件。
答案 0 :(得分:0)
这不起作用的原因与csproj文件中遗留的东西有关:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PublishDatabases>false</PublishDatabases>
<PackageAsSingleFile>true</PackageAsSingleFile>
<FilesToIncludeForPublish>OnlyFilesToRunTheApp</FilesToIncludeForPublish>
<DeployOnBuild>true</DeployOnBuild>
<DeployTarget>Package</DeployTarget>
</PropertyGroup>
应该是
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PublishDatabases>false</PublishDatabases>
</PropertyGroup>
右键单击项目并选择发布时,可能会添加包装信息。我认为它导致构建无法正确部署,因为它向msdeploy提供了单独的指令。
发布在本地工作的原因是它正在为没有这些设置的调试配置构建。