使用Microsoft.Build命名空间

时间:2016-05-06 09:49:40

标签: c# msbuild clickonce publish microsoft.build

我有一个项目保存到我希望能够发布的文件位置。该项目具有所有发布属性集,我希望使用这些属性(URL等..)

我目前有以下代码来创建Build:

        string projectFileName = @"C:\ePortfolio_Client\ePortfolio_Client.vbproj";

        var pc = new ProjectCollection();
        pc.SetGlobalProperty("Configuration", "Release");
        pc.SetGlobalProperty("Platform", "Any CPU");
        BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), new BuildRequestData(new ProjectInstance(projectFileName), new string[] { "Rebuild" }));

但我真的需要进一步采取这一步并发布它。

我遇到过命名空间 Microsoft.Build.Tasks.Deployment.ManifestUtilities 但是我不知道如何将它用于我需要的东西?

修改

我有一些建议,但仍然没有做到。我现在有以下设置:

我有一个项目导出到文件位置,我正在编写一个将发布此文件的应用程序。

在我希望发布的项目中,我做了以下更改:

vbproj 文件: 我添加了以下内容

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>


  <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

在一个单独的Web项目中,我创建了一个pubxml文件并将其复制到我想要发布的项目中。其中包含以下内容:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>\\ **Location to publish the Project ** \</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>
</Project>

上面提到的vbproj文件已经包含了我想要使用的发布设置,所以我遇到的一个问题是 - 我是否需要将它们复制到这个pubxml文件中?

从应用程序开始编写(发布项目) - 我使用以下内容启动构建:

        string projectFileName = Properties.Settings.Default.SolutionLocation + @"\ePortfolio_Client\ePortfolio_Client.vbproj";

        var pc = new ProjectCollection();
        pc.SetGlobalProperty("Configuration", "Release");
        pc.SetGlobalProperty("Platform", "Any CPU");
        pc.SetGlobalProperty("PublishProfile", "ePublish");
        pc.SetGlobalProperty("DeployOnBuild", "True");
        pc.SetGlobalProperty("DeployTarget", "MSDeployPublish");

        BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), new BuildRequestData(new ProjectInstance(projectFileName), new string[] { "Rebuild" }));

这似乎构建了这个项目,但我仍然没有得到一个出版物。 我希望这个额外的细节能让人们更多地帮助我实现这个目标!

0 个答案:

没有答案