Articles of msbuild

如何在msbuild脚本中设置#define for linux?

有一些开源项目 ,应该build立在Windows和Linux上。 在Linux上,它应该有不同的构build,我想在C#源代码中使用LINUX预处理器常量,包括.csproj, #if !LINUX // windows specific code (some TFS integration) #else // linux specific code (absence of TFS integration) #endif 但在Windows和Linux版本中都使用.csproj,我不能像这样在.csproj中将项目设置添加到项目设置中(因为这个定义对于两个平台都是有效的): – <DefineConstants>DEBUG;TRACE</DefineConstants> + <DefineConstants>DEBUG;TRACE;LINUX</DefineConstants> 可以创build两个独立的configuration,并将configuration名称从命令行传递给msbuild。 但这违反了DRY原则(configuration重复,不需要这样做)。 可以在构build期间自动确定操作系统,而不是从外部传递这些信息。 人们推荐我创build并包含脚本(例如,operating_system.targets,或者它应该是operating_system.props?),并使用它从项目,如下所示: <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(SolutionDir)\.nuget\NuGet.targets" /> + <Import Project="$(SolutionDir)\operating_system.targets" /> 有几种方法来确定操作系统,例如http://www.mono-project.com/docs/faq/technical/#how-to-detect-the-execution-platform if (Type.GetType("Mono.Runtime") != null) IsMono = true; // we're on Mono else IsMono […]

编译fsharp时无法findmsbuild

在尝试编译最新的fsharp代码之前,我已经编译并安装了Linux上运行在Linux上的RedHat Enterprise 7 linux发行版中的mono-5.0.1。 mono –version Mono JIT compiler version 5.0.1.1 (2017-02/5077205 Fri Jul 28 08:35:19 EDT 2017) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: normal Notifications: epoll Architecture: s390x Disabled: none Misc: softdebug GC: sgen (concurrent by default) 我在/ usr / local中安装了mono。 在尝试运行autogen.sh之前,我之前已经导出了以下envars: export PKG_CONFIG_PATH=/usr/local/mono/lib/pkgconfig/ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export […]

Jenkins MSBuild插件不能在windows slave上使用cygwin

我试图在cygwin的奴隶上运行msbuild(主是Ubuntu的)我得到以下错误: 致命:/cygdrive/c/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe不存在 该文件确实存在于所述位置。 (而且我是区分大小写的) 我也安装了“cygpath”jenkins插件,但我仍然得到相同的错误 我也改变了path到C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe但得到相同的错误(但与相关的path)

如何在Linux上编译cmake,以便它可以生成vsproj文件?

我想用cmake在linux上生成visual studio项目文件。 不幸的是,在linux上,默认情况下,visual studio项目文件生成器没有启用。 cmake构build指令没有提到如何在linux上启用这个function。 看起来像生成器是基于主机平台cmake正在构build。 有没有人补丁cmake启用Visual Studio项目生成器在Linux上? 我们有一些工具可以在linux和windows上通过parsing.sln / .vcxproj文件来分析项目。 但是在windows上生成.sln / .vcxproj文件是非常不方便的,因为我们的主要开发是在linux / osx上完成的。

如何在.NET Core上构build多目标解决scheme?

我有解决scheme与多目标csproj文件: <PropertyGroup> <TargetFrameworks>net45;netstandard1.6</TargetFrameworks> </PropertyGroup> 要么 <PropertyGroup> <TargetFrameworks>net45;netcoreapp1.1</TargetFrameworks> </PropertyGroup> 我试图在Linux上构build这个解决scheme的.NET Core部分,但是不能pipe理它。 如果我跑 dotnet build 它构build了所有的目标: netcoreapp1.1 , netstandard1.6和net45并且在net45上失败,因为.NET Core在Linux上不提供.NET 4.5平台。 我试图通过指定mono作为构build框架来解决这个问题,但是解决scheme很复杂,并不是所有的.NET 4.5都支持mono。 但是,这可以帮助别人避免can't find .NETFramework v4.5只是运行: FrameworkPathOverride=/usr/lib/mono/4.5/ dotnet restore FrameworkPathOverride=/usr/lib/mono/4.5/ dotnet build 当我运行dotnet build /p:TargetFramework=netcoreapp1.1我得到了很多的错误,我认为是因为netstandard1.6项目没有build立。 如果我通过 dotnet build /p:TargetFrameworks=netcoreapp1.1\;netstandard1.6 我明白了 MSBUILD : error MSB1006: Property is not valid. Switch: netstandard1.6 如何将netcoreapp1.1和netstandard1.6目标框架同时netstandard1.6传递给msbuild? 我知道我可以添加额外的属性,并根据它进行条件编译,但我不想更改csproj来解决这个问题。

Windows生成工具安装失败

Windows 10,Node – 8.8.1,NPM – 5.4.2,Node-gyp – 3.6.2 我尝试使用以下命令安装双子座: npm install -g gemini 在search这个问题后,我试图通过https://github.com/nodejs/node-gyp#on-windows解决Windows的1个选项。 而在这个stream程中,我有Windows-build-tools安装的麻烦。 我运行在cmd.exe(如pipe理员): npm install –global –production windows-build-tools 安慰: C:\Windows\system32>npm install –global –production windows-build-tools > windows-build-tools@1.3.2 postinstall C:\Users\p.stepanov\AppData\Roaming\npm\node_modules\windows-build-tools > node ./lib/index.js Downloading BuildTools_Full.exe Downloading python-2.7.13.msi [> ] 0.0% (0 B/s) Downloaded python-2.7.13.msi. Saved to C:\Users\p.stepanov\.windows-build-tools\python-2.7.13.msi. Starting installation… events.js:182 throw er; // Unhandled […]

msbuild – 如何并行执行任务批处理(同一个项目)

假设我有这个定义 <MSBuild Projects="$(MSBuildProjectFile)" Condition="'@(FilesToCompile)' != ''" Targets="buildcpp" Properties="CPPFILE=%(FilesToCompile.FullPath);OBJFILE=$(ObjectFolder)\%(FilesToCompile.Filename).doj;IncludeDirs=$(IncludeDirs)" /> 由于任务批处理 ,这个目标被多次执行,每个文件在FilesToCompile执行一次。 重要的是,每个调用都是完全独立的,因此非常适合并行化。 题 如何为任务批处理启用“并行模式”? 不是一个复制 我想用不同的属性值多次调用相同的目标 ,为此,我需要并行地完成批处理 。 链接的问题不会执行批处理,而是使用不同的项目。

我们可以将ComponentsLocation的值从“Relative”更改为“HomeSite”吗?

hii,以及我开发一个setup.exe(bootstrapper)使用GenerateBootstrapper.Bootstrapper加载我的msi文件检查和安装先决条件。它完美运行,如果我使ComponentsLocation *)要么“ HomeSite ”从微软下载先决条件和安装。 *)或“ 相对 ”,在我的应用程序存在和安装的相同位置采取先决条件。 但是在我的情况下,我希望当我运行setup.exe(bootstrapper)它首先检查我的应用程序存在的位置的组件,如果它(组件)不存在,那么它从供应商的URL(微软)下载。 用wix v3.5可以吗?

从Linux主机触发Visual Studio生成

我正在开始一个非常特定于Windows的项目,但我更熟悉Linux开发环境(例如emacs和zsh)。 我所需要做的是我的Windows代码是编译它 – 我有一个networking共享,我可以编辑的代码,我可以处理与远程查看日志。 有没有什么办法可以远程触发Windows服务器上的构build? 在Linux上这很简单 – 只需通过SSH远程执行构build脚本,或者使用Jenkins或其他CI来通过Web界面触发构build。 我真的想知道是否有某种function我缺lessWindows,这将允许我从一个单独的Linux主机运行“MsBuild.exe”或“cl.exe”。

MSBuild V110而不是V120

我在使用npm安装浏览器同步时遇到了一些问题。 错误是MSB4019:未find导入的项目“C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \ Microsoft.Cpp.Default.props”。 我可以确认path不存在,但是有一个V110文件夹,而不是V120。 我认为这涉及到视觉工作室的版本? 我如何获得V120安装/ V110删除?