问题标签 [msbuild-15]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
428 浏览

msbuild - 如何使用多目标在 MsBuild 15 .csproj 中正确指定 DocumentationFile

我正在使用 MsBuild 15 的最新预览版,并且我有一个net40针对netstandard1.6. 我正在努力<DocumentationFile>正确指定。

对于我指定的任何路径,构建后生成的 xml 文件将同时位于该路径和两个目标输出目录中。

例如,如果我指定 <DocumentationFile>doc.xml</DocumentationFile>

然后xml文件将在我的项目目录bin\net40bin\netstandard1.6.

bin\net40我只需要在我的和bin\netstandard1.6目录中的那些 xml 文档文件。我怎样才能做到这一点?此外,对于当前的行为,不清楚将哪个文档文件复制到我的项目目录,因为这些 xml 文档对于两个目标可能不同。

在早期的项目版本中,我曾经单独指定文档 xml 路径DebugRelease使用类似的路径构建配置bin\Debug\doc.xml,但是使用最新的 MsBuild 15,如果我为所有可能的目标组合指定 dir,则可以进行多目标,并且此类路径的数量加倍并构建配置。

是否有任何通用的好方法可以指定一次文档文件路径并将其仅放到正确的输出位置?

0 投票
1 回答
711 浏览

msbuild - 错误的 App.Config publish.targets MSBuild 15

我在 GitHub/Microsoft/MSBuild 上发布了这个问题,但我希望更广泛的社区可能对此有一些早期经验。

我正在将解决方案/项目从 VS 2015(.NET Core 预览版)转换为 VS 2017 和最新的 .NET Core。

该解决方案现在在 Visual Studio 2017 中构建得非常好,但我遇到的问题是尝试使用 MSBuild 15 运行构建时(由于 .NET Core 项目,我无法使用 v14)。尝试从 obj\debug\net452 文件夹复制 .config 文件失败,但由于某种原因,它添加了完整的 .csproj 名称

问题是 Publish.Targets 对 .config 文件做了一些奇怪的事情。

它将完整的项目名称(包括 .csproj)添加到配置文件的名称中,而不仅仅是使用 AssemblyName。

在这种情况下,Sitecore.Foundation.Commerce.Engine.csproj 是项目,代码是 AssemblyName(它最终将被重命名为更好的名称)。如您所见,它正在寻找不存在的“Sitecore.Foundation.Commerce.Engine.csproj.code.exe.config”。code.exe.config 确实存在。

我很高兴向任何有兴趣帮助我解决这个问题的人提供 GitHub 存储库访问权限,因为它阻止了我们将存储库公开。

所以 code.exe.config 被解析为 Sitecore.Foundation.Commerce.Engine.csproj.code.exe.config

MSBuild 的输出片段:

这是 Sitecore.Foundation.Commerce.Engine.csproj 内容:

0 投票
1 回答
3414 浏览

msbuild - 仅 MSBuild 部署 - 无构建

无论如何要执行/p:DeployOnBuild=true对 MSBuild 的调用的发布/部署部分吗?例如,在一次调用中进行构建,然后在另一次调用中进行发布(文件复制)。

从命令行调用时,MSBuild 15 和发布配置文件存在问题。

0 投票
3 回答
1955 浏览

msbuild - MSBuild 15:无法实例化“错误”任务

我正在尝试以编程方式构建一个使用 C#7 和 MSBuild 15 的项目,但由于程序集引用不匹配,此任务似乎失败了。

这是我的代码:

这是错误消息:

这是一个项目的链接,您可以使用它来重新创建问题:

https://drive.google.com/a/xibis.com/file/d/0B-mqMIMqm_XHcVRJQmtxQkd1b3c/view?usp=sharing

您必须将代码中的路径更改为您自己机器上的项目,但如果这是 VS 2017 项目或更早的项目似乎并不重要。

另一件事可能相关也可能不相关,我注意到此文件夹中的 Microsoft.WebApplication.Build.Tasks.Dll :

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications

似乎仍然引用 Microsoft.Build.Framework.dll 版本 14,而不是我预期的 15。

0 投票
2 回答
8128 浏览

.net - SSDT(SSRS 和 SSAS)项目的 MSBuild 15.0 (Visual Studio 2017) 错误 MSB4067:“元素元素下方无法识别”

在构建包含 SSDT 项目(rptproj 或 dwproj 项目)的解决方案时,MSBuild 14.0(Visual Studio 2015 中包含的版本)会记录警告 (MSB4078)。例如:

警告 MSB4078:项目文件“Reports.rptproj”不受 MSBuild 支持,无法构建。

这很好,MSBuild 不支持 SSDT 项目,我们不得不退回到使用 Visual Studio(即devenv.com)构建它们。例如,请参阅此答案

但是,在使用 MSBuild 15.0(Visual Studio 2017 中包含的版本)时,构建相同的解决方案文件会出现以下错误

Reports.rptproj(3,3):错误 MSB4067:元素 <Project> 下的元素 <State> 无法识别。

虽然我可以从构建配置中删除 SSDT 项目,但这并不理想,因为我希望在从 Visual Studio 中构建解决方案时构建它们。

有没有办法将错误 MSB4067 降级为警告,或者在构建解决方案时跳过某些项目?

0 投票
1 回答
407 浏览

visual-studio - Msbuild 15 包含未设置为“请勿复制”的配置文件

我们希望开始使用 MSbuild 15 而不是 MSBuild 14。不过我们有一个小问题。

以前在 MSBuild 14 中,当文件在 Visual Studio 中的文件属性的“复制到输出目录”设置中标记为“不复制”时,它不会创建 .dll.config 文件。但是现在使用 MSBuild 15,它确实创建了一个 .dll.config 文件。

MSBuild 15 中有没有办法不复制文件?因为它会产生向后兼容性问题。

Visual Studio 配置文件

配置文件设置

0 投票
1 回答
75 浏览

msbuild - 在共享文件夹上使用 nuget 时指定 Windows 用户

我正在编写将一些 nuget 包更新到我的共享文件夹(MSBuild 15)的脚本:

我将有权访问此共享文件夹的 Windows 用户更改为:NugetUser。

我可以使用 NugetUser 凭据从资源管理器访问共享。

但是当我使用:

或者:

我无法将包放在共享上,因为我没有权限。如何从脚本中指定用户?

我的脚本是一个简单的批处理文件:

0 投票
2 回答
2740 浏览

c# - 如何将旧的 WinForms 项目迁移到新的 VS2017 项目格式

我们目前正在将我们的项目升级到新的 VS2017 项目格式。这背后的主要原因是将一些库从 PCL 转换为 .NetStandard,并能够使用新项目格式附带的新内置 Nuget 包功能,从而摆脱整个 nuget/库引用/依赖问题。

[编辑] 迁移解决方案中所有项目的主要原因是防止在混合旧(仍在使用 .nuspec)和新格式项目时无法在 .nupkg 中获得正确依赖项的问题

如何将 Wpf 项目迁移到新的 VS2017 格式的问题的答案帮助我们在转换项目的 WPF 部分方面取得了长足的进步。但是,我们仍然有大量无法替换或升级的 Windows 窗体。

只需转换项目文件,为文件依赖项(*.Designer.cs 和 *.resx 文件)添加适当的设置,我们就可以编译它。

我们现在如何声明项目项以使 Visual Studio 2017 a) 将它们识别为 UserControl 或 Form ?b) 打开 WinForms 设计器工具以相应地编辑 .cs 或 Designer.cs 文件?

非常感谢任何有关寻找解决方案的提示。

0 投票
2 回答
1762 浏览

c# - .NET 多目标与 .NET Standard 和便携式库 MSBuild 15

移植到 .NET 标准版本,您的源可能与可移植库相同,但支持的平台可能不一样。

例如.NET standard 1.6,可能是您的 api 可从便携式中获得的最低版本Profile47Profile47支持.net 4.5 或更高版本,nut.NET Standard 1.6仅支持4.6.1 及更高版本

使用新的msbuild 15 csproj/fsproj (也是 VS2017)的新多目标,是否可以同时为便携式库.Net 标准进行编译以使过渡更容易?

0 投票
2 回答
1684 浏览

cordova - MSBuild 2017 无法构建 Cordova 解决方案

我最近升级了我的 Cordova 解决方案以使用 Visual Studio 2017。我能够从 Visual Studio Professional 2017 IDE 中成功构建 Android APK。

当我尝试从命令行使用 MSBuild 2017 构建解决方案时,我收到以下错误:

MSBUILD:cordova-build 错误 BLDErr_Build_ExceptionLookingForNode:无法确定 Node.js 安装的位置。例外:无法加载文件或程序集“Microsoft.VisualStudio.Setup.Engine,版本=1.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。[C:\dev\Common\Source\Mobile-NGC\PhalanxNGC.jsproj]

我在使用 Node.js v4.8.4 和 v6.11.3 以及 32 位和 64 位版本时尝试过,但没有成功。

我还查找了 Microsoft.VisualStudio.Setup.Engine.dll,我可以在 IDE 目录中找到它: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.Setup.Engine.dll

我无法在 MSBuild 目录下找到它。

任何帮助,将不胜感激。谢谢。

编辑:澄清一下,我使用的 MSBuild 是从https://www.visualstudio.com/downloads/下载的“Visual Studio 2017 构建工具” 。

它安装在C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin

我正在使用的 MSBuild 命令是:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBUILD.exe /nologo /p:Configuration=Debug /verbosity:diag C:\dev\Common\Source\Mobile-NGC \NGC.sln

Edit2:在将失败的 MSBuild CLI 输出与成功的 IDE 构建输出进行比较后,我可以看到没有为失败的 CLI MSBuild 记录属性 NodeJsDir。

这是成功构建日志中的行: NodeJsDir = C:\ProgramData\Microsoft\VisualStudio\MDA\8430d60a\taco-toolset-6.3.1

Edit3:看起来失败的构建日志中缺少其他用于 Apache Cordova 工具的环境变量。其中包括:NODEJSDIR、NPMINSTALLDIR、LANGNAME、BUILDVERBOSITY、GIT_HOME。

更新:我已将此问题报告给 Microsoft 支持,现在已记录为问题。目前的解决方法是从命令行使用 devenv 进行构建:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.com [PathToCordovaSolution] "Debug|Android"