我有一個使用VS2010創建的c#.Net 4.0項目,現在正在使用VS2012進行訪問。使用msbuild執行文件系統發佈配置文件
我試圖從本網站只發布所需的文件傳送到目標位置(C:\建立\ MyProject的[文件])
我的文件結構: ./ProjectRoot/MyProject .csproj的 ./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml
我正在通過的MSBuild如下:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe ./ProjectRoot/MyProject.csproj/p:DeployOnBuild = true /p:PublishProfile=./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml
下面是FileSystemDebug.pubxml的XML
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>C:\builds\MyProject\</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
產生的行爲是:
- 一個zip文件在這裏創建:./ProjectRoot/obj/Debug/Package/MyProject.zip
- 沒有被部署到
<publishUrl>C:\builds\MyProject\</publishUrl>
WTF - 創建的壓縮文件是豬早餐和全時不需要對應用程序文件。
當我運行此發佈配置文件通過Visual Studio的文件夾在* 的C創建:\建立\ MyProject的*幷包含我想確切的假象。
如何從msbuild得到這個簡單的結果?
爲了向後兼容,存在'Condition =「false」的條件導入。 VS2010要求此導入存在,即使由於虛假情況而被跳過。如果你再看一眼,那麼你會看到csproj包含另一個'$(VSToolsPath)\ WebApplications \ Microsoft.WebApplication.targets'的導入,它解析爲當前版本的Visual Studio的目標文件。 – 2016-03-04 08:54:12
注意'$(MSBuildToolsVersion)'在正確的VS版本帳戶中的戰略使用:' '。這對我VS2015更新1工作。 –
2016-03-17 03:53:46