c# - 总是从 Microsoft.Build 库中获得 BuildResultCode.Failure
问题描述
最近我使用Microsoft.Build 包和 VS2017 以编程方式构建 C# 项目。但是,我总是得到BuildResultCode.Failure
. 不知道为什么,需要帮助,谢谢。这是我的代码:
string projectFileName = @"C:\Downloads\ToBeBuilt\ToBeBuilt\ToBeBuilt.csproj";
ProjectCollection pc = new ProjectCollection();
pc.SetGlobalProperty("Configuration", "Debug");
pc.SetGlobalProperty("Platform", "x86");
pc.SetGlobalProperty("OutDir", @"C:\Downloads\Artifacts");
Dictionary<string, string> globalProperty = new Dictionary<string, string>();
globalProperty.Add("Configuration", "Debug");
globalProperty.Add("Platform", "x86");
globalProperty.Add("OutDir", @"C:\Downloads\Artifacts");
BuildRequestData BuidlRequest = new BuildRequestData(projectFileName, globalProperty, "15.0", new string[] { "Build" }, null);
BuildResult buildResult = BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), BuidlRequest);
BuildResultCode a = buildResult.OverallResult;
这是要构建的目标项目:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
...
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
...
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="Build">
<Csc Sources="@(Compile)"/>
</Target>
</Project>
解决方案
总是从 Microsoft.Build 库中获得 BuildResultCode.Failure
您可以使用提供的日志文件 MSBuild 检查类似的问题以保持调试:
string projectFileName = Directory.GetCurrentDirectory() + "\\build\\Solution.sln";
ProjectCollection pc = new ProjectCollection();
Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
GlobalProperty.Add("Configuration", "Release");
GlobalProperty.Add("Platform", "Any CPU");
GlobalProperty.Add("OutputPath", Directory.GetCurrentDirectory() + "\\build\\\bin\\Release");
BuildParameters bp = new BuildParameters(pc);
bp.Loggers = new[] {
new FileLogger
{
Verbosity = LoggerVerbosity.Detailed,
ShowSummary = true,
SkipProjectStartedText = true
}
};
BuildManager.DefaultBuildManager.BeginBuild(bp);
BuildRequestData BuildRequest = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { "Build" }, null);
BuildSubmission BuildSubmission = BuildManager.DefaultBuildManager.PendBuildRequest(BuildRequest);
BuildSubmission.Execute();
BuildManager.DefaultBuildManager.EndBuild();
if (BuildSubmission.BuildResult.OverallResult == BuildResultCode.Failure)
{
throw new Exception();
}
}
推荐阅读
- c - 在 _Generic 之前,C 对 main 的不同签名是如何支持的?
- python - 有没有办法混淆或屏蔽数据框列中的值?
- asp.net-mvc - 在 Asp Core 2.2 中获取和设置表上的数据 CheckboxList
- javascript - 如何使用 normalizr 规范化嵌套响应
- android - 如何以编程方式获取我设备的热点的 SSID 和 BSSID
- python - 如何训练和实施对 keras 的信心
- python - 对象内 QSound 的意外行为
- python - 在 Django Rest Framework 中处理来自可浏览 API 的 POST 请求查询参数
- python - 其他设备是否可以连接到 jupyter
- babylonjs - 使用 videoTexture 作为 opacityTexture