问题标签 [msbuild-4.0]

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 投票
2 回答
4756 浏览

teamcity - TeamCity MSBuild 4.0 帮助

我需要一些关于我不久前创建的 MSBuild 文件的帮助。

我要做的就是构建解决方案,在解决方案中发布一个项目,然后将文件复制到一个目录

在我将 Teamcity 设置为 .net 4 msbuild、msbuild 4.0 工具和 86 时,我收到一条错误消息

错误 MSB4067:元素<ItemDefinitionGroup>下方的元素<Project>无法识别。


0 投票
1 回答
1531 浏览

msbuild-4.0 - 从 TFS2008 构建 VS2010 解决方案

我有一个用于构建 .Net 3.5 应用程序的 TFS 2008 构建代理。我现在有一个 .Net 4.0 应用程序,我想在同一个构建代理上编译它。我已确保在那里安装了 MSBuild 4.0,并且还安装了所有必需的组件,但是MSB4062在构建时出现以下错误:

[任何 CPU/版本] C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(244,5):错误 MSB4062:“Microsoft.WebApplication.Build.Tasks.GetSilverlightItemsFromProperty”无法从程序集 C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.Build.Tasks.dll 加载任务。无法加载文件或程序集 'file:///C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.Build.Tasks.dll' 或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。确认声明正确,并且程序集及其所有依赖项都可用。

我假设我得到了这个,因为 TFSBuild.proj 由 MSBuild 3.5 执行,这反过来意味着我的解决方案是用 MSBuild 3.5 编译的。

我的诊断正确吗?有什么方法可以确保 TFS2008 将 MSBuild 4.0 用于我的解决方案?是否可以在单个团队项目上完成,这样它就不会影响在同一构建代理上构建的任何其他团队项目?

请注意,我已经检查了问题Build failed - VS2010 solution on TFS2008,这不是重复的。

0 投票
2 回答
4937 浏览

cruisecontrol.net - 只有在 CCNET 中调用 MSBuild 时才会出现“OutputPath 属性未设置”错误

我制作了一个 MSBuild 项目,它只是使用我们的解决方案文件作为参数执行 msbuild 任务。我已经定义了一个 BeforeBuild 目标,我在其中设置了一些属性,以及一个执行 msbuild 任务的 Build 目标。

我已经确认在命令行控制台中构建 msbuild 脚本时没有发生错误。但是,当我在 CCNET 项目的 msbuild 任务中使用它时,我不断收到以下错误:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (483,9):错误:未为项目“MyProject.msbuild”设置 OutputPath 属性。请检查以确保您为此项目指定了有效的配置和平台组合。配置='调试'平台='AnyCPU'。您可能会看到此消息,因为您正在尝试构建没有解决方案文件的项目,并且指定了该项目不存在的非默认配置或平台。

我检查了构建日志,似乎在 _CheckForInvalidConfigurationAndPlatform 期间发生了错误。它甚至无法继续我的构建任务!由于该脚本仅用于在 Debug/Release 和 AnyCPU 作为平台下构建解决方案,因此我尝试将以下行添加到我的 msbuild 项目中:

我仍然可以在命令行中构建项目而不会出现错误,但 CCNET 返回上述相同的错误。

我不明白为什么 CCNET 不断收到错误,我不知道还有什么可以尝试的。

请帮忙。

0 投票
1 回答
1368 浏览

tfs - 用于不同项目的具有不同二进制文件夹的 TFS

我有一个包含 Silverlight 项目、几个 Web 应用程序和一些 Windows 服务以及它们的小型 Winforms 测试应用程序的解决方案。

当我使用 TFS 构建它时,它会将所有二进制文件放在Binaries文件夹中。它还会创建一个_PublishedWebsites文件夹,用于放置 Web 应用程序以供部署。

我想要一些项目将它们的输出放在Binaries文件夹中的单独目录中。我希望我通常会在bin\Release文件夹中找到的文件在那里。

我看了又长又苦,只能找到关于如何实现这一目标的稀缺文档,并且仅适用于 TFS 2008。那里有一篇很好的文章link text和另一个 VS 2010 的条目link text。但是,这些都不起作用:-(

似乎构建忽略了该<OutputPath>属性。我尝试摆弄该<AfterBuild>属性,但不幸的是,如果我使用该$(OutDir)属性,我将获得Binaries目录中的所有文件,而不仅仅是刚刚编译的文件。

目前我正在建立一个单独的构建,它只编译我感兴趣的项目,但我真的很想一次构建发布所需的所有文件。

编辑:我说得不够清楚,但我使用的是最新版本的 TFS(TFS 2010 RTM)。我<OutputPathDir>按照我提供的链接中的说明在项目级别进行设置。

干杯。

0 投票
1 回答
581 浏览

c# - 将 DllImport 从 C# 导入非托管 C++ 库时,MSBuild 4.0 的依赖性问题

在 VS2010 中显式设置非托管 C++ 项目和 C# 项目之间的依赖关系在 VS2010 中得到尊重,但在 MSBuild 4.0 中忽略依赖关系。

不可能从 C# 项目 afaik 添加对非托管 C++ 项目的引用。

如果解决方案包含非托管和托管项目,我如何确保正确的构建顺序?

0 投票
1 回答
1144 浏览

tfsbuild - 代码覆盖就地检测:无法完全备份二进制错误

任何人都可以帮助解决我的 Team Build 2010 构建日志中的这个错误吗?只有当我在同一台机器上同时运行两个构建代理时才会出现这种情况。

运行有以下问题:

代码覆盖就地检测:

无法完全备份二进制文件“C:\Builds\3\MyProject\Binaries\MyProject.UserManager.DataModel.dll”。

找不到由检测实用程序创建的备份文件:“C:\Builds\3\MyProject\Binaries\MyProject.UserManager.DataModel.dll.orig”。

0 投票
3 回答
758 浏览

visual-studio-2010 - 构建具有多个项目和多个配置的解决方案

Visual Studio 2010 Premium,本机 WIN32 MFC 项目(解决方案中没有 .net 项目)。

我们有一个包含 35 个项目的复杂解决方案。该产品有很多客户,我们通常做的是为每个客户创建一个单独的配置。除了很少的#define 和对输出目录的更改之外,配置没有任何重大变化。它工作正常,但现在产品的每次更改都需要更改多个配置,并且也容易出错。我们希望根据某些参数仅使用一个通用配置来清理多个配置,并将这些参数传递给批处理文件以构建构建。

为客户端“A”条件编译#define _BUILD_PROJECT_FOR“A”构建它的输出文件夹在“c:\builds\client\a”中,在解决方案中的 35 个项目中,我们只需要该客户端的 32 个项目

要传递什么命令和参数,以便我可以通过传递#ifdef、要构建的项目及其输出目录在命令行构建解决方案。

我正在尝试使用 msbuild,但无法将预处理器参数传递给编译器。

0 投票
1 回答
4741 浏览

msbuild - 为什么 MSBuild ToolsVersion 4.0 不能构建旧项目?

我们使用 Cruse Control 来管理我们的构建过程。当我们将 vs2008 项目转换为 vs2010 时,我们将目标框架设置为 3.5,用于 Web 和类库项目。

在这一点上,我们不会将所有解决方案都转换为 vs2010;如果我们不必这样做,就不会。

我最近更新了巡航控制用来指向的 MSbuild 项目文件,MSBuild 4.0以便我们的构建过程能够构建 vs2010 项目。

C:\windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

一切都很好,直到提交了一个针对 4.0 框架的 Web 项目。此时弹出此错误:

CS0433:“System.Web.Routing.RouteCollection”类型存在于c:\Windows\Microsoft.NET\assembly\GAC_32\System.Web\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.dll 和 c:\ Global.asax.cs(15, 43) 中的 Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Web.Routing.dll

那时我开始意识到这些Windows/Microsoft.NET/Assembly文件夹。

现在......所有的 MSBuild 项目,即使他们使用的是 MSBuild 4.0,仍然将工具版本设置为 3.5。那么为什么 3.5 目标构建查看新的 4.0 程序集文件夹并发现此冲突?可能是因为我使用的是 MSBuild 4.0。但是,如果我可以更改 MSBuild 使用的 toolVersion,您会认为我可以告诉它以 3.5 为目标,而不必担心这些潜在的冲突。

为了解决这个问题,我去了巡航控制使用的相关 MSBuild 项目文件,并将它们的 toolsVersion 更改为 4.0。这通过了冲突错误。但是现在每次它尝试构建一个我们尚未转换为 vs2010 项目的解决方案中的项目时,它都会出现如下错误:

SomeFilePath 中的 MyProject.csproj:LC0000:'无法加载文件或程序集或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。在 LC(0, 0)

如果我在 Visual Studio 2010 中打开包含该项目的解决方案并进行转换,构建它并提交它并强制另一个构建,我通过该错误只是发现另一个尚未转换的项目正在抛出相同的错误。

所以现在我确定使用 MSBuild 4.0 并真正针对 4.0 框架。为什么 4.0 不能构建 3.5 项目或 vs2008 解决方案项目?

0 投票
3 回答
2054 浏览

asp.net-mvc - Msbuild Web 部署包中缺少 Mvc dll

我从 Visual Studio 2010 Build Deployment Package 创建了一个 Web 部署包。

要部署的项目设置为“此项目中的所有文件”。

我通过 IIS 管理器中的导入应用程序,使用 Web 部署将它安装在服务器上。

它可以安装,但是当我浏览网站时出现黄屏死机,配置错误“无法加载文件或程序集'System.Web.Mvc”。

如果我深入到部署包创建的 .zip 文件,System.Web.Mvc.dll 不在那里。

将 System.Web.Mvc.dll 放入我的部署包中是正确的过程,还是我应该单独安装 Mvc?

0 投票
4 回答
768 浏览

msbuild - 如何仅在构建机器上执行 MSBuild 复制操作?

我想在构建机器上执行一些复制操作(而不是在开发机器上)

  • 执行构建之后,并且
  • 集成测试运行之前。

我怎么做?

也许,我应该将问题分解为子问题并举一些例子。

问题 1:我需要做什么才能使 MSBuild 脚本检测到它正在构建机器上执行并因此执行复制操作?我是否调整 *.csproj 文件?我是否在构建定义文件中做某事?构建服务器是我们 TFS 2010 后端的一部分。

问题 2:我需要使用什么变量来引用构建机器上的构建文件夹?绝对路径是

我需要将一些受版本控制并最终在 Sources 文件夹中的文件复制到 Binaries 文件夹。