Tag: msbuild

使用“ReflectionOnlyAssemblyResolve事件”构建Visual Studio的问题

我有一个针对.NET Framework 3.5的Visual Studio 2010项目。 该项目从Visual Studio构建良好,但当我尝试从命令行或从TeamCity编译它时,我得到以下构建错误: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.WinFX.targets(269,9):错误MC1000:未知的生成错误,’无法解析对程序集的依赖性’Microsoft.Windows.Design.Extensibility,Version = 4.0.0.0,Culture = neutral,PublicKey Token = b03f5f7f11d50a3a’因为它尚未预加载。 使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关的程序集。 [C:\工作\ MyProject的\ MyProject.sln] 链接器似乎抱怨Microsoft.Windows.Design.Extensibility.dll ,但该项目不依赖于此库。

使用MSBuild 从命令行定义预处理器值

我需要创建一个包含多个项目的现有大型应用程序的演示版本。 我想使用现有的项目,并通过预处理器指令中性化function #if DEMO mycode.NeuterNow(); #endif 我们正在使用MSBuild构建我们的应用程序,我理想地使用以下内容: MSBuild -DefineProperty:DEMO MySolution.sln 这样的function是否存在?

用于Windows x64的ASP.NET核心应用程序(.NET Framework)仅在project.assets.json中出错

我想使用VS 2017简化我的ASP.NET核心Web应用程序(.NET Framework)应用程序中的配置。 我已经知道我的网站将在x64环境下的Windows / IIS和.NET 4.6.2下运行。 在此应用程序的预见和未预见的未来中,没有机会使用从开发到生产的任何其他环境。 所以,我只需要Debug x64和Release x64模式。 (不需要AnyCPU和x86!),所以我继续从项目中删除了所有其他配置。 现在,在编译时,我收到以下错误: ‘C:\ Projects \ MyProject \ My.Website \ obj \ project.assets.json’没有’.NETFramework,Version = v4.6.2 / win7-x64’的目标。 确保已为TargetFramework =’net462’和RuntimeIdentifier =’win7-x64’恢复此项目。 MD.Website C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.targets 我在Windows 7上开发,我不知道如何解决这个问题。 任何的想法?

在C#可执行文件中构建.sln

我正在尝试在C#中构建一个.sln。 我有以下代码。 try { Console.WriteLine(“Building Solution…\n”); string projectFileName = Directory.GetCurrentDirectory() + “\\build\\Solution.sln”; ProjectCollection pc = new ProjectCollection(); Dictionary GlobalProperty = new Dictionary(); GlobalProperty.Add(“Configuration”, “Release”); GlobalProperty.Add(“Platform”, “x86”); BuildRequestData BuidlRequest = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { “Build” }, null); BuildResult buildResult = BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), BuidlRequest); catch (Exception e) { Console.Write(“Error:” + e.Message); Console.ReadLine(); } Console.WriteLine(“Completed […]

MSBuild BuildInParallel,无法运行的自定义任务生成过程

我正在使用MSBuild任务的BuildInParallel属性来并行运行构建项目。 根项目正在构建四个子项目。 子项目正在使用自定义MSBuild任务,该任务使用System.Diagnostics.Process启动新进程。 由于某些原因,当UseShellExecute为false时,生成的进程无法正常运行。 我不知道为什么会这样,我无法弄清楚错误是什么 – 所有发生的事情都是Process.ExitCode是1,没有exception.. 这是自定义MSBuild任务: using System; using Microsoft.Build.Utilities; using System.Diagnostics; public class MSBuildProcessTask : Task { public string Executable { get; set; } public string Arguments { get; set; } public override bool Execute() { using (var p = new Process()) { try { p.StartInfo = new ProcessStartInfo(Executable, Arguments) { UseShellExecute […]

任何人都有从MSBuild调用Rake获取代码生成和其他好处的经验吗? 怎么回事? 你有什么想法/建议?

使用Visual Studio 2008在C#中编程时,我经常希望“自动”生成代码。 如果可能的话,我想通过让我的MSBuild解决方案文件调用Rake来实现它,Rake会调用Ruby代码来生成代码,生成的文件会自动出现在我的解决方案中。 这是一个商业示例(我可以命名的许多可能示例),这种自动代码生成会有所帮助。 在最近的一个项目中,我有一个包含一些包含美元金额的属性的界面。 我想要第二个接口和第三个接口,它们具有与第一个接口相同的属性,除了它们是“合格”的业务单元名称。 像这样的东西: public interface IQuarterlyResults { double TotalRevenue { get; set; } double NetProfit { get; set; } } public interface IConsumerQuarterlyResults { double ConsumerTotalRevenue { get; set; } double ConsumerNetProfit { get; set; } } public interface ICorporateQuarterResults { double CorporateTotalRevenue { get; set; } double CorporateNetProfit { […]

模仿msbuild进程的程序集解析

我正在编写一个validation工具,用于检查项目中引用的文件版本。 我想使用MSBuild使用的相同解析过程。 例如,Assembly.Load(..)需要一个完全限定的程序集名称。 但是,在项目文件中,我们可能只有“System.Xml”之类的东西。 MSBuild可能使用项目的目标框架版本和其他一些启发式来决定要加载哪个版本的System.Xml。 你将如何模仿(或直接使用)msbuild的assembly解决过程? 换句话说,在运行时,我想获取字符串“System.Xml”,以及.csproj文件中找到的其他信息,并找到msbuild将找到的相同文件。

创建MSBuild自定义任务以在* compile之前修改C#代码*

我想创建一个自定义的MSBuild任务,在csc.exe编译之前更改我的.cs文件(当然,这不会修改它们 – 我不希望触及实际的源文件)。 我知道PostSharp和.NET的其他AOP框架,它们不是这个特定项目的选项,而且我想学习如何做到这一点。 我究竟需要做些什么才能让它发挥作用? 谢谢理查德

MSBuild.exe输出编码

我使用MSBuild.exe在俄语语言的机器上构建解决方案。 但在TeamCity构建日志所有俄罗斯字符编码错误。 如何设置MSBuild.exe以正确输出(例如UTF-8)?

TeamCity中的MSBuild步骤考虑了app.config而不是ASP.NET WEB API项目的web.config,导致警告MSB3247

我有带有Web.conig文件的ASP.NET WEB API项目。 在VS2015中构建时,不会报告错误和警告。 但是,当我使用MSBuild构建步骤在TeamCity上构建此项目时,我收到警告MSB3247: [ResolveAssemblyReferences] ResolveAssemblyReference [14:30:01] : [ResolveAssemblyReference] No way to resolve conflict between “protobuf-net, Version=2.0.0.602, Culture=neutral, PublicKeyToken=257b51d87d2e4d67” and “protobuf-net, Version=2.0.0.480, Culture=neutral, PublicKeyToken=257b51d87d2e4d67”. Choosing “protobuf-net, Version=2.0.0.602, Culture=neutral, PublicKeyToken=257b51d87d2e4d67” arbitrarily. [14:30:01] : [ResolveAssemblyReference] No way to resolve conflict between “Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed” and “Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”. Choosing “Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed” arbitrarily. […]