首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让MSBuild忽略项目引用?

当您在使用MSBuild构建项目时,可能会遇到一些问题,其中之一就是如何让MSBuild忽略项目引用。以下是一些可能的解决方案:

  1. 使用Condition属性:

在项目文件中,您可以使用Condition属性来控制是否应该构建特定的项目引用。例如,如果您想要在调试构建时忽略某个项目引用,可以使用以下代码:

代码语言:xml<ProjectReference Include="path/to/your/project.csproj" Condition="'$(Configuration)' != 'Debug'" />
复制

这将确保在调试构建时不会包含指定的项目引用。

  1. 使用GlobalProperties属性:

在MSBuild命令行中,您可以使用GlobalProperties属性来控制是否应该构建特定的项目引用。例如,如果您想要在构建时忽略某个项目引用,可以使用以下命令:

代码语言:bash
复制
msbuild /t:Build /p:SkipProjectReference=True

然后,在项目文件中,您可以使用以下代码来检查SkipProjectReference属性的值:

代码语言:xml<ProjectReference Include="path/to/your/project.csproj" Condition="'$(SkipProjectReference)' != 'True'" />
复制

这将确保在构建时不会包含指定的项目引用,除非您在命令行中指定了SkipProjectReference=True

  1. 使用Directory.Build.props文件:

在解决方案的根目录中,您可以创建一个名为Directory.Build.props的文件,并在其中添加以下代码:

代码语言:xml<Project>
复制
  <ItemGroup>
   <ProjectReference Remove="@(ProjectReference)" Condition="'%(FileName)' == 'YourProjectName'" />
  </ItemGroup>
</Project>

这将确保在构建解决方案时不会包含名为YourProjectName的项目引用。

请注意,这些解决方案可能需要根据您的具体需求进行调整。在使用这些解决方案时,请确保您了解它们的作用,并根据您的项目需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何通过命令行 msbuild 编译项目

本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败 在开始菜单可以找到 VisualStudio 的安装文件夹...msbuild 还原新的项目格式的引用 > msbuild -t:restore 还原之后通过 msbuild 编译 > msbuild 通过 msbuild 编译默认是不需要添加任何参数,因为所有参数都在...属性为 release 编译 msbuild -p:configuration="release" 总结一下,对于一个新的项目,需要先还原然后再编译 nuget restore msbuild -t:...restore msbuild 下面是 msbuild 的一些常用的命令 编译为 Release 代码 -p:configuration="release" 清理项目 -t:clean 重新编译 -t:...rebuild 编译项目 -t:build 默认可以忽略这个参数 发布 -t:Publish 多个参数之间可以放在一起,如还原代码之后重新编译为 release 的代码 msbuild -t:restore

7.1K20

vue组件如何被其他项目引用

自己写的vue组件怎么才能让其他人引用呢,或者是共用组件如何其他项目引用。本文就粗细的介绍下,如有疑问欢迎共同讨论。在这里你能了解下如下知识点: 1....如何发布一个包到npmjs仓库上 2.如何引用一个npm包,尤其是本地引用 3.vue组件的两种引用方案 一、发布一个包到npm的步骤 在npmjs.org上注册一个账号 然后进入命令提示窗口输入: npm...二、build方式引用vue组件 示例使用的是本地安装一个npm包。因为把包发布到npmjs,然后再npm到项目中太过麻烦(由于我们要做来回调整和测试)。实现vue组件三步骤: 1....配置组件(被引用的组件),可以省略 配置package.json,主要是增加main节点 "main": "index.js" 主是main的这个节点,如果不配置,我们在其他项目中就不用import XX...2、本地如何引用npm包(安装发布好的包) 用命令模式进入开发项目文件夹,用命令安装包。npm install --save 本地路径  即可。

2.8K50

如何项目准时上线?

每一次项目结束都应该对项目做一次复盘。 如何解决项目延期问题?...解决项目延期的关键三要素 基于我多年的项目管理经验,我认为要解决项目延期问题,必须做好三件事。...所有人参与其中,发挥团队所有人的价值,通过集体共创可以获得更好的解决方案。 在事后,我们可以很清晰的看到,我们做的功能是不是往目标更前进了一步。如果没有。...那是不是做到上面这些就能保证项目能准时上线了?也不一定。因为这里面最关键的是执行的人。人的管理是一门艺术。这里以后再详细讲。 三、项目结束后:对项目做复盘。...需求可以变,变了之后如何处理。这个也需要明确。有些是可以直接放到版本里通过加班解决,有些可以舍弃掉一些需求。尽量不在要发布的时候做变更。 4、做好PLAN B计划。 遇到一些突发时间的预案是什么。

41510

如何MSBuild 中正确使用 % 来引用每一个项(Item)中的元数据

MSBuild 中写在 中的每一项是一个 Item,Item 除了可以使用 Include/Update/Remove 来增删之外,还可以定义其他的元数据(Metadata)...使用 % 可以引用 Item 的元数据,本文将介绍如何正确使用 % 来引用每一个项中的元数据。...---- 定义 Item 的元数据 就像下面这样,当引用一个 NuGet 包时,可以额外使用 Version 来指定应该使用哪个特定版本的 NuGet 包。...引用元数据使用的是 % 符号。...关于使用 exe 进行自定义编译的部分可以参考我的另一篇博客: 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv 关于写文件的部分可以参考我的另一篇博客: 在 MSBuild

23210

项目文件 csproj 中或者 MSBuild 的 Target 中使用 % 引用集合中每一项的属性

在编写项目文件或者 MSBuild Target 文件的时候,我们经常会使用 来定义集合中的一项。在定义的同时,我们也会额外指定一些属性。...然而这些属性如何拿到并且使用呢?本文将介绍使用方法。 ---- 将下面的代码放到你项目文件的末尾,最后一个 的前面,可以在编译的时候看到两个新的警告。...于是,你在警告信息中看到的两个警告信息里面,一个输出了 Compile 集合中每一项的标识符(通常是相对于项目文件的路径),另一个输出了每一个 Compile 项中的 FileName 属性。...本文会经常更新,请阅读原文: https://blog.walterlv.com/post/msbuild-referencing-metadata.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验

18250

如何项目准时上线 - 续篇

上次写如何项目准时上线时,提出了一个问题,是不是做到文章里说到的这些就能保证项目能准时上线? 其实,并不一定。...参加评审的目的是想老板真实的看到因为一个临时需求的变动,我们需要改变多少个地方。...要有意识地老板明白一个道理,长期加班不仅不能提升工作效率,反而会因为连续加班导致项目出错率更高。 如果确实项目很紧急,可以选择砍掉一些不重要的需求。同时可以想办法争取更多的资源。...任务的紧急与重要程度,是根据需求目的和项目整体计划进度来的。新人可以上级来安排优先级。 为了应对突发的重要紧急的任务,在安排项目任务时,不要排的太紧,需要预留一部分时间。...尤其对于项目管理者来说,需求是无限的,如何筛选出最”正确“的需求是非常难的一种能力。

39410

Roslyn 如何了解某个项目msbuild 中所有用到的属性以及构建过程

使用 SDK Style 格式的 csproj 十分简化,但是实际上的构建过程需要用到超级多的逻辑,那么如何知道在 msbuild 所使用的构建过程有哪些,定义了那些属性。...有那些 target 文件参与了这个项目构建 本文告诉大家一个方法,可以输出某个项目msbuild 中的完全使用到的 targets 和属性等 本文需要用到 -pp 这个命令。...这个命令可以输出所有内联到此项目的构建过程的文件,以及将构建过程用到的指令输出到文件中。可以通过这个命令了解构建此项目所用到的导入的文件。...使用这个命令将不会构建项目 这个命令添加可以参数,参数是输出文件,如果没有参数,就输出控制台 进入某个项目,输入下面命令就可以输出在 msbuild 视角的整个构建用到的内容 dotnet msbuild...可以加上平台,只输出某个平台下使用的构建过程 dotnet msbuild -p:TargetFramework=netcoreapp2.0 -pp:FullProject.xml

46610

如何PhpStorm同时打开多个项目?(多项目并存的问题)

PhpStorm是个好东西,用来开发PHP项目相当爽,但是不知道什么原因,一个工程要打开一个ide,要找些东西实再太麻烦。...,如果你要在文件——新打开一个项目的话,它会提示是要替换当前的项目呢?...习惯了sublime中的那种直接添加文件夹为一个项目,左边窗口直接显示多个项目。那么这样的PHPstorm的项目管理方式肯定是不习惯的。那么如何解决呢?...很简单——在文件——设置——Directories里你可以看到当前的项目所在文件夹,在右边有个Add Content Root 点击它你就可以添加新的项目路径了。...但是他还是显示在同一项目下面,至少也有点类似sublime了。当然如何你所有的项目都放在wwwroot下面直接打开wwwroot就可以,但是它的管理方式不是项目而是文件夹了。

2K21

dotnet pack

将被打包项目的 NuGet 依赖项添加到 .nuspec 文件,以便在安装包时可以进行正确解析。 如果打包的项目具有对其他项目引用,则不会将其他项目包含在包中。...可向 dotnet pack 命令提供 MSBuild 属性,用于打包进程。 有关详细信息,请参阅 NuGet 包目标属性和 MSBuild 命令行引用。...示例部分介绍了如何在不同的情况下使用 MSBuild -p 开关。 默认情况下,Web 项目不可打包。...|-h|--help 打印出有关如何使用命令的说明。 --include-source 除输出目录中的常规 NuGet 包外,还包括调试符号 NuGet 包。...--no-build 打包前不生成项目。 还将隐式设置 --no-restore 标记。 --no-dependencies 忽略项目引用,仅还原根项目

1.6K20

理解 C# 项目 csproj 文件格式的本质和编译流程

但是我们依然有一些常见的项可以先介绍介绍: Reference 引用某个程序集 PackageReference 引用某个 NuGet 包 ProjectReference 引用某个项目 Compile...当然如果你非常感兴趣,还可以阅读我另外几篇关于 Target 使用相关的文章: 如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target - 吕毅 如何创建一个基于命令行工具的跨平台的...NuGet 工具包 - 吕毅 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 - 吕毅 每次都要重新编译?...跨平台的 MSBuild/dotnet build 的 Target 支持差量编译 - 吕毅 如何最快速地将旧的 NuGet 包 (2.x, packages.config) 升级成新的 NuGet...项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量了) - 吕毅 一个 csproj 项目指定多个开发框架 - 吕毅 从以前的项目格式迁移到 VS2017 新项目格式 - 林德熙

2.5K10

如何你的开源项目更有展现力?

今天讲的内容不是纯纯的技术干货, 而是笔者在做开源项目中用到的一些工具, 可以让我们的开源项目更加富有展现力, 最后会同步一下H5-Dooring 页面编辑器和V6.Dooring可视化大屏编辑器的一些更新...如何你的开源项目有个漂亮的README.md ?..."url": "供他人提issue的地址" }, "engines": { "npm": ">=5.5.0", "node": ">=9.3.0" } } 大家在做开源项目的时候也可以参考如上规范..., 自己的开源项目更可靠健壮吧~ 使用git-emoji你的代码提交可视化 git-emoji是git 提交信息的 emoji 指南, 我们按照它的规范提交log日志, 将会生成形象易懂的提交表情,...我们看到的比较有名的开源项目提交都会有形象的emoji, 也都是遵循了对应的提交规范. 下面是它的介绍网站: ?

32120

Roslyn 如何在 Target 引用 xaml 防止文件没有编译

在使用新的项目格式,可以使用 Target 添加项目,但是有一些项目需要在合适的时候添加,如果添加早了,那么会用户看到这些文件,如果添加的时间是在引用编译之后,那么文件将无法进行编译。... 一开始我就知道将文件放在 Target 里可以设置用户看不到引用的文件,写一个 Target 需要包含一个 Name 所以我就写出下面代码 <Target Name="MoqakermirLaqouLurter...为了<em>让</em> <em>MSBuild</em> 运行上面的 Target 我就需要给 BeforeTargets 在一开始我就尝试用的比较多的 CoreCompile 请看代码 <Target Name="MoqakermirLaqouLurter...但是如果放在 Target 里就无法看到引用的文件夹,也就无法删除文件夹,通过这个方法可以我使用源代码打包 如使用下面的代码,即使没有设置 MainWindow 不可见,用户也是看不见这个文件 <...源代码打包项目是为了解决很小的代码,都需要做出一个 nuget 包,这个 nuget 包是 dll 也就是软件会引用太多的 dll ,大家都知道如果引用的 dll 多了,软件启动速度也就是变慢了。

1K10

Roslyn 如何在 Target 引用 xaml 防止文件没有编译

在使用新的项目格式,可以使用 Target 添加项目,但是有一些项目需要在合适的时候添加,如果添加早了,那么会用户看到这些文件,如果添加的时间是在引用编译之后,那么文件将无法进行编译。... 一开始我就知道将文件放在 Target 里可以设置用户看不到引用的文件,写一个 Target 需要包含一个 Name 所以我就写出下面代码 <Target Name="MoqakermirLaqouLurter...为了<em>让</em> <em>MSBuild</em> 运行上面的 Target 我就需要给 BeforeTargets 在一开始我就尝试用的比较多的 CoreCompile 请看代码 但是如果放在 Target 里就无法看到<em>引用</em>的文件夹,也就无法删除文件夹,通过这个方法可以<em>让</em>我使用源代码打包 如使用下面的代码..."> 源代码打包项目是为了解决很小的代码,都需要做出一个 nuget 包,这个 nuget 包是 dll 也就是软件会引用太多的

71020

手把手教你写 Roslyn 修改编译

Roslyn 如何使用 MSBuild Copy 复制文件 本文告诉大家如何MSBuild 里使用 Copy 复制文件 Roslyn 使用 Target 替换占位符方式生成 nuget 打包 本文告诉大家如何编写在编译过程修改打包文件...也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把项目分小,功能分细,但是不希望项目有很多的 dll,因为如果项目有很多 dll 会软件打开的时间比较长 Roslyn NameSyntax...Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译 本文告诉大家如果在 Nuget 引用源代码的方式引用源代码,在 VisualStudio 的智能提示和 Resharper...,在开一个新的项目的时候经常需要添加公司,版权等,但是这些信息不想每次都添加于是我就想用 Nuget 管理所有配置,安装一个 nuget 就自动配置 Roslyn 如何在 Target 引用 xaml...防止文件没有编译 在使用新的项目格式,可以使用 Target 添加项目,但是有一些项目需要在合适的时候添加,如果添加早了,那么会用户看到这些文件,如果添加的时间是在引用编译之后,那么文件将无法进行编译

2K20
领券