标签: msbuild

如何使用Windows SDK 7.1从命令行运行msbuild?

我在CI服务器上设置了.NET 4.0支持.我已经安装了.NET 4.0和Windows 7.1 SDK中的.NET工具.

在.NET 2.0和3.5上,这才有效.使用.NET 4,当我从"开始"菜单运行"Windows SDK 7.1命令提示符"时,它会抱怨

The x86 compilers are not currently installed. x86-x86
Please go to Add/Remove Programs to update your installation.
.
Setting SDK environment relative to C:\Program Files\Microsoft
SDKs\Windows\v7.1
\.
Targeting Windows Server 2008 x86 Debug
Run Code Online (Sandbox Code Playgroud)

然后当我尝试运行msbuild时,我得到:

C:\Program Files\Microsoft SDKs\Windows\v7.1>msbuild
'msbuild' is not recognized as an internal or external command,
operable program or batch file.

C:\Program Files\Microsoft SDKs\Windows\v7.1>
Run Code Online (Sandbox Code Playgroud)

我不太相信安装运行时和SDK会让你的系统无法运行msbuild ...我错过了一些明显的步骤或模糊Windows Update,或者是时候放弃并开始攻击系统路径了?

msbuild sdk .net-4.0

132
推荐指数
5
解决办法
14万
查看次数

项目的默认XML名称空间必须是MSBuild XML名称空间

我在本地克隆了ASP.NET Core SignalR Repo,并尝试在以下环境中打开解决方案.

IDE

Microsoft Visual Studio Enterprise 2015
Version 14.0.25431.01 Update 3
Microsoft .NET Framework
Version 4.6.01055
Run Code Online (Sandbox Code Playgroud)

DOT NET CLI

? dotnet --info
.NET Command Line Tools (1.0.0-preview2-1-003177)

Product Information:
 Version:            1.0.0-preview2-1-003177
 Commit SHA-1 hash:  a2df9c2576

Runtime Environment:
 OS Name:     Windows
 OS Version:  6.1.7601
 OS Platform: Windows
 RID:         win7-x64
Run Code Online (Sandbox Code Playgroud)

我最终看到了很多这类错误消息:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj :error:项目的默认XML名称空间必须是MSBuild XML名称空间.如果项目是以MSBuild 2003格式创作的,请添加 xmlns="http://schemas.microsoft.com/developer/msbuild/2003"到元素中.如果项目是以旧的1.0或1.2格式编写的,请将其转换为MSBuild 2003格式. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

我想知道如何以正确的方式解决这个问题.

msbuild asp.net-mvc visual-studio-2015 .net-core asp.net-core

132
推荐指数
5
解决办法
13万
查看次数

运行MSBuild无法读取SDKToolsPath

你好,我在运行一个NAnt脚本时会遇到一些问题,这个脚本曾用于正确构建基于.Net 2.0的网站,当使用VS2008及其相关工具进行编译时.我最近将所有项目/解决方案文件升级到VS2010,现在我的构建失败并出现以下错误:

[exec] C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(2249,9):错误MSB3086:任务无法使用S dkToolsPath""或注册表找到"sgen.exe"键"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A".确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK

现在,我已经在构建服务器上安装了Windows SDK的早期版本(.Net 3.5),并且安装了完整的.Net 4.0框架,但我没有遇到.Net 4.0特定版本的Windows SDK.

经过一些实验和研究,我终于设置了一个新的环境变量"SDKToolsPath"并将其指向我的Windows 6.0 sdk文件夹中的sgen.exe副本.这会产生相同的错误,但它让我注意到即使设置了SDKToolsPath环境变量(确认我可以在命令行"回显"它并且它具有预期的值),错误消息似乎表明它是没有被阅读(注意空引号).

我发现的大多数信息都是特定的.Net 3.5(或更早版本).还没有多少相关的4.0.搜索错误代码MSB3086也没有任何用处.知道这可能是什么吗?

斯科特

.net msbuild

128
推荐指数
8
解决办法
11万
查看次数

如何在MSBuild中的Exec命令中转义引号

我正在尝试构建一个MSBuild脚本,将脚本中的网络驱动器映射到驱动器号,但不幸的是,目标文件夹的路径包含一个嵌入式空间.嵌入空间导致映射失败,我不知道是否可以转义路径周围的引号.我尝试过双引号,但是MSBuild不喜欢它(要么是Windows XP不喜欢它).任何人都知道如何编码这个野兽,以便地图有效吗?

<Exec Command="net use x: \\ofmapoly703\c$\program files\ar\iap /user:$(UserID) $(Password)"
WorkingDirectory="c:\"
ContinueOnError="false"
/>
Run Code Online (Sandbox Code Playgroud)

嵌入空间当然发生在"程序文件"中.

msbuild

125
推荐指数
2
解决办法
3万
查看次数

条件编译和框架目标

如果目标框架是较新版本,那么我的项目代码可能会有一些小的地方可以大大改进.我希望能够更好地利用C#中的条件编译来根据需要切换它们.

就像是:

#if NET40
using FooXX = Foo40;
#elif NET35
using FooXX = Foo35;
#else NET20
using FooXX = Foo20;
#endif
Run Code Online (Sandbox Code Playgroud)

这些符号中的任何一个都是免费的吗?我是否需要将这些符号作为项目配置的一部分注入?看起来很容易,因为我知道哪个框架是MSBuild的目标.

/p:DefineConstants="NET40"
Run Code Online (Sandbox Code Playgroud)

更新:我的问题是人们如何处理这种情况?你在创造不同的配置吗?您是否通过命令行传递常量?

c# msbuild .net-4.0 .net-3.5

121
推荐指数
4
解决办法
5万
查看次数

在Visual Studio中"将所有警告视为除...之外的错误"

在Visual Studio中,我可以选择"将警告视为错误"选项,以防止在有任何警告的情况下编译代码.我们的团队使用此选项,但我们希望保留两个警告作为警告.

有一个选项可以禁止警告,但我们希望它们显示为警告,这样就不起作用了.

似乎获得我们想要的行为的唯一方法是在"特定警告"文本框中输入每个C#警告号的列表,除了我们想要作为警告的两个.

除了维护问题之外,这种方法的最大缺点是一些警告没有数字,因此无法明确引用它们.例如,"无法解析此引用.无法找到程序集'数据....'"

有谁知道更好的方法吗?


澄清那些没有立即看到为什么这是有用的人.想想大多数警告是如何工作的.他们告诉你刚才写的代码中有些东西.修复它们大约需要10秒钟,这样可以保持代码库更清洁.

"过时"警告与此截然不同.有时修复它意味着只使用新的方法签名.但是,如果整个类已经过时,并且您使用它分散了数十万行代码,那么修复它可能需要数周或更长时间.您不希望构建在那么长时间内被破坏,但您肯定希望看到有关它的警告.这不仅仅是一个假设的案例 - 这发生在我们身上.

文字"#warning"警告也是独一无二的.我经常检查它,但我不想打破构建.

c# msbuild

120
推荐指数
4
解决办法
2万
查看次数

在没有Visual Studio 2010的情况下安装MSBuild 4.0

我在笔记本电脑上安装了.NET 4.0和VS 2010 RC,并自动安装了MSBuild.我希望通过安装不带VS 2010的.NET SDK来构建一个持续集成服务器,所以我在这个链接上从Microsoft下载了.NET 4.0 Framework .不幸的是,似乎没有安装MSBuild与此下载(或至少我找不到它).

此链接是SDK的适当链接,还是仅仅是运行时?如果没有,SDK的链接在哪里?

我有点怀疑它是整个SDK,因为它只有35MB,其中.NET 3.5 SP1下载超过200MB.

.net msbuild sdk .net-4.0 visual-studio-2010

120
推荐指数
2
解决办法
9万
查看次数

为什么MSBuild在C:\中查找Microsoft.Cpp.Default.props而不是c:\ Program Files(x86)\ MSBuild?(错误MSB4019)

当我运行msbuild来构建一个vc2010项目时,我收到以下错误:

error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. 
Confirm that the path in the <Import> declaration is correct, and that the file exists 
on disk.
Run Code Online (Sandbox Code Playgroud)
  • msbuild位于c:\ Program File(x86)\ MSBuild
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolVersions\V4.0 VCTargetsPath设置为$(MSBuildExtensionsPath32)\ Microsoft.Cpp\v4.0 \
  • 运行msbuild/verbosity时:diag作为良好的系统显示MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath 在构建开始时设置为Environment
  • 将MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath设置为shell中的环境变量不会导致它们在构建开始时显示为Environment

修复已尝试

  • 卸载.net 4.5,修复.net 4.0
  • 在系统变量中设置MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath.

似乎没有正确设置MSBuildExtensionsPath32并且设置MSBuildExtensionsPath没有帮助

SET MSBuildExtensionsPath="C:\Program Files\MSBuild"
Run Code Online (Sandbox Code Playgroud)

如果您有任何想法阻止正确设置此变量,请告诉我.

msbuild

119
推荐指数
9
解决办法
14万
查看次数

我应该用/ MD或/ MT编译吗?

在Visual Studio中,有编译标志/ MD和/ MT,可让您选择所需的C运行时库类型.

我理解实现方面的差异,但我仍然不确定使用哪一个.有哪些优点/缺点?

我听说过/ MD的一个优点是,这允许有人更新运行时(比如修补安全问题),我的应用程序将从此更新中受益.虽然对我而言,这几乎看起来像一个非特征:我不希望人们改变我的运行时而不允许我测试新版本!

我很好奇的一些事情:

  • 这会如何影响构建时间?(据推测/ MT有点慢?)
  • 其他含义是什么?
  • 大多数人使用哪一个?

c++ msbuild crt msvcrt visual-studio

117
推荐指数
6
解决办法
8万
查看次数

在创建自定义MSBuild任务时,如何从C#代码获取当前项目目录?

我希望获得当前的Project Dir,而不是运行其路径硬编码的外部程序.我正在使用自定义任务中的进程调用外部程序.

我该怎么办?AppDomain.CurrentDomain.BaseDirectory只是给了我VS 2008的位置.

c# msbuild

117
推荐指数
13
解决办法
27万
查看次数