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

msbuild不遵守.sln文件设置

msbuild是微软开发的一款构建工具,用于编译、构建和部署.NET应用程序。它可以根据.sln文件中的设置来构建项目,但有时可能会出现不遵守.sln文件设置的情况。

一种可能的原因是.sln文件中的设置与项目文件(.csproj或.vbproj)中的设置不一致。例如,如果在.sln文件中设置了特定的编译选项,但在项目文件中又进行了覆盖,那么msbuild可能会按照项目文件中的设置进行构建,而不是按照.sln文件中的设置。

另一种可能的原因是.msbuild命令行参数的影响。如果在使用msbuild命令行构建项目时指定了特定的参数,那么这些参数可能会覆盖.sln文件中的设置。

为了解决这个问题,可以采取以下步骤:

  1. 确保.sln文件中的设置与项目文件中的设置一致。可以手动编辑项目文件,或者使用Visual Studio等集成开发环境来进行设置。
  2. 检查并确保在使用msbuild命令行构建项目时没有指定任何与.sln文件设置冲突的参数。可以查阅msbuild的文档,了解各个参数的作用和影响。
  3. 如果问题仍然存在,可以尝试使用其他构建工具或方法来构建项目,例如使用Visual Studio的内置构建功能,或者使用其他第三方构建工具。

总之,要确保msbuild遵守.sln文件设置,需要保持.sln文件和项目文件的一致性,并且在使用msbuild命令行构建项目时不要指定与.sln文件设置冲突的参数。

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

相关·内容

如何打开sln文件并显示窗口_在.sln文件设置Visual Studio默认启动项目的简单方法…

要避免这个问题,就要保证git签出的VS解决方案的启动项目是一致的,然而启动项目的设置并不保存在.sln文件中,而是保存在.suo文件中,但是.suo文件通常不放在git中,因为它经常变动。...于是问题变成了——有没有办法直接在.sln文件设置启动项目呢?...捣鼓了一会发现,如果设置启动项目,Visual Studio会自动选择一个固定的项目作为启动项目,Visual Studio是根据什么作出这样的选择呢?...用文本编辑器打开.sln文件分析后发现原来是第一个”Project…EndProject”。...于是,解决方法一跃而出——修改.sln文件,将要设置为默认启动项目的项目的”Project…EndProject”放在第一个。

5.1K30

MSBuild 常用参数

本文告诉大家在 MSBuild 里面常用的参数 一般的 msbuild 在编译的时候都会添加很多参数,用法如下 进入对应编译的 sln 或 csproj 文件所在的文件夹,执行下面命名 msbuild...如果在文件夹里面存在多个不同的 sln 文件等,在 msbuild 后面添加对应的文件 msbuild xx.sln 此外添加的参数写在 msbuild 后面 并行编译 有多个项目一起编译,通过并行编译可以加快速度...用 /m 参数开启并行编译 msbuild /m 通过后面带上数字表示多少 CPU 同时编译,下面代码表示 6 个 CPU 同时编译 msbuild /m:6 发布版编译 通过发布版编译就是设置 configuration...属性为 release 通过下面代码 msbuild /p:configuration="release" 在msbuild通过 /p 设置对应的属性的值 在 msbuild 的参数是区分 / 和...或短参数 flp 可以指定输出的日志文件 msbuild -fl -flp:logfile=xx.log;verbosity=n 这里的 verbosity 表示输出等级 运行上面代码建议编译当前文件夹里面的项目

2K10

MSBuild的简单介绍与使用

构造工程(脚本文件) 先说说构造工程,只要通过Notepad打开任何一个Visual Studio下的C#工程(csproj)文件,就知道构造工程到底是怎么回事了。 <MSBuild Projects="@(ProjectToBuild)" Targets...Project元素 这是每一个项目文件的最外层元素,它表示了一个项目的范围。如果缺少了这一元素,MSBuild会报错称Target元素无法识别或不被支持。...对于拥有多个Target的项目,你可以通过设置Project的DefaultTargets(注意是复数)属性来指定需要运行哪(几)个Target,如果没有这个设置MSBuild将只运行排在最前面的那个...语法是: 其中Type属性可以被看作是资源的类别名称,比如对于.cs源文件,你可以把它们的Type都设置为Source

1.2K50

三种方法设置 .NETC# 项目的编译顺序,而不影响项目之间的引用

方法一:设置 ReferenceOutputAssembly 1 2 3 4 详见 通过 ReferenceOutputAssembly=False 在引用项目时,额外引入依赖文件...在解决方案上右键,然后选择“设置项目依赖”: 然后在弹出的项目依赖对话框中选择一个项目的依赖: 详见:通过设置 sln 解决方案依赖,确保不引用的两个项目之间有明确的编译顺序 - walterlv。...ReferenceOutputAssembly 解决方案依赖 MSBuild 编译任务 位置 项目文件(csproj)或编译文件(*.props / *.targets) 解决方案文件sln) 项目文件...编译项目:使用 dotnet build 或者 msbuild 命令来编译时,传入项目文件 编译解决方案:使用 dotnet build 或者 msbuild 命令来编译时,传入解决方案文件 拷贝依赖项目的输出文件

41420

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

本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败 在开始菜单可以找到 VisualStudio 的安装文件夹...Windows7 那么请自己百度如何将某个文件夹添加到环境变量)点击高级系统设置 在系统属性页面点击高级,找到环境变量按钮 ?...还原请使用下面代码 > nuget restore 这个命令可以在 sln 文件所在的文件夹输入,也可以在 nuget.package 文件所在的文件夹里面输入,一个是还原所有项目的 nuget 一个是还原一个项目的...如果有多个 sln 文件,如 a.sln 和 b.sln 请在 Nuget restore 的最后添加上需要还原的文件 > nuget restore a.sln 然后通过 msbuild 还原新的项目格式的引用...> msbuild -t:restore 还原之后通过 msbuild 编译 > msbuild 通过 msbuild 编译默认是不需要添加任何参数,因为所有参数都在 sln 文件 如果需要特殊指定

7.1K20

如何:修改C++项目属性和目标,而无需更改项目文

如何:修改C++项目属性和目标,而无需更改项目文件 可以从 MSBuild 命令提示符处重写项目属性和目标而无需更改项目文件。 当你想要暂时或偶尔应用某些属性时,这非常有用。 ...它假定你对 MSBuild 有一定了解。 有关详细信息,请参阅 MSBUild。  ...重写项目属性: 重写项目目标: 还可以使用/p: 选项在 msbuild 命令行上设置任一选项: cmd复制 > msbuild myproject.sln /p:ForceImportBeforeCppTargets...="C:\sources\my_props.props" > msbuild myproject.sln /p:ForceImportAfterCppTargets="C:\sources\my_target.targets...从命令提示符处设置 ForceImportBeforeCppTargets="C:\sources\my_props.props" 创建具有其实现或特定目标的 .targets 文件 从命令提示符处设置

15310

dotnet build

库的 IL DLL 包含入口点,因此无法执行。 MSBuild dotnet build 使用 MSBuild 生成项目,因此它支持并行生成和增量生成。 有关详细信息,请参阅增量生成。...除其自己的选项外,dotnet build 命令也接受 MSBuild 选项,如用来设置属性的 -p 或用来定义记录器的 -l。 有关这些选项的详细信息,请参阅 MSBuild 命令行参考。...或者也可以使用 dotnet msbuild 命令。 备注 如果 dotnet build 由 dotnet run 自动运行,则不遵守 -property:property=value 等参数。...如果未指定项目或解决方案文件MSBuild 会在当前工作目录中搜索文件扩展名以 proj 或 sln 结尾的文件并使用该文件。...--force 强制解析所有依赖项,即使上次还原已成功,也例外。 指定此标记等同于删除 project.assets.json 文件。 -?|-h|--help 打印出有关如何使用命令的说明。

1.9K20

手把手教你写 Roslyn 修改编译

文件的定义的方法 于是通过 Directory.Build.props 的方法找到 sln 文件sln 文件所在的文件夹添加 Directory.Build.props 文件,因为很多项目的...sln 都在项目的最外,所以通过这个方法找到 sln 是可以的,只是不通用 如我有一个项目 lindexi 这个项目的文件夹请看下图 | Directory.Build.props | lindexi.sln...,这个文件sln 文件刚好在相同的文件夹,所以通过这个方法就可以获得 sln 所在的文件夹 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv MSBuild...Roslyn 如何使用 MSBuild Copy 复制文件 本文告诉大家如何在 MSBuild 里使用 Copy 复制文件 Roslyn 使用 Target 替换占位符方式生成 nuget 打包 本文告诉大家如何编写在编译过程修改打包文件...也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把项目分小,功能分细,但是希望项目有很多的 dll,因为如果项目有很多 dll 会让软件打开的时间比较长 Roslyn NameSyntax

2.1K20

Roslyn 解决找不到 SolutionDir 属性

在旧版本的 csproj 格式也就是 Franken-proj 格式,可以使用 SolutionDir 拿到当前sln文件所在的文件夹,但是在 SDK Style 格式的项目文件,是拿不到这个属性的,本文告诉大家如何做到兼容之前的逻辑...,那么将会输出如下代码 warning : Solution *Undefined* 如果我使用 dotnet 命令构建 sln 文件,那么可以输出 sln 所在的文件夹 这就是不同点 但是如果我只是想通过...dotnet 或 msbuild 命令构建 csproj 文件,而构建 sln 文件,此时还需要使用 SolutionDir 属性。...那么请在 sln 文件夹添加一个叫 Directory.Build.props 文件,这个文件可以设置这个文件夹里面的所有项目的构建 而 $(SolutionDir) 属性的含义也就是一个属性,因此只需要返回当前...> 上面代码的 $(MSBuildThisFileDirectory) 就是获取当前文件所在的文件夹,而当前文件是放在和 sln 文件相同的文件

34730

win10 uwp 使用 msbuild 命令行编译 UWP 程序

,也就是 sln 或 csproj 文件所在的文件夹,通过 msbuild 可以编译 sln 或编译 csproj 项目,推荐是编译 sln 的方式 在命令行跳转盘符,如从原来的C盘到 D 盘可以通过...注意这个路径需要使用 csproj 文件 msbuild "D:\lindexi\UWP\Foo.csproj" /t:restore /t:Publish /p:Configuration=Release...文件 msbuild /t:clean // 带路径 msbuild "E:\lindexi\UWP\Foo.sln" /t:clean 还原 Nuget 包 msbuild /t:restore...// 带路径 msbuild "E:\lindexi\UWP\Foo.sln" /t:restore 重新编译 msbuild "D:\lindexi\UWP\Foo.csproj" /t:rebuild.../t:clean 如果有了 git 的清理,实际也就不需要使用 msbuild 的清理,只是防止有逗比上传了 obj 文件msbuild /t:restore 欢迎 nuget 包,注意添加自己的

79020

win10 uwp 使用 msbuild 命令行编译 UWP 程序

,也就是 sln 或 csproj 文件所在的文件夹,通过 msbuild 可以编译 sln 或编译 csproj 项目,推荐是编译 sln 的方式 在命令行跳转盘符,如从原来的C盘到 D 盘可以通过...注意这个路径需要使用 csproj 文件 msbuild "D:\lindexi\UWP\Foo.csproj" /t:restore /t:Publish /p:Configuration=Release...文件 msbuild /t:clean // 带路径 msbuild "E:\lindexi\UWP\Foo.sln" /t:clean 还原 Nuget 包 msbuild /t:restore...// 带路径 msbuild "E:\lindexi\UWP\Foo.sln" /t:restore 重新编译 msbuild "D:\lindexi\UWP\Foo.csproj" /t:rebuild.../t:clean 如果有了 git 的清理,实际也就不需要使用 msbuild 的清理,只是防止有逗比上传了 obj 文件msbuild /t:restore 欢迎 nuget 包,注意添加自己的

1.2K20

RoslynMSBuild 在编译期间从当前文件开始查找父级文件夹,直到找到包含特定文件文件

你只需要编写这样的代码,即可查找 Walterlv.DemoSolution.sln 文件所在的文件夹的完全路径了。...), Walterlv.DemoSolution.sln)) 而这段代码所在的文件,可能是这样的目录结构(里面的 Walterlv.DemoProject.csproj...$([MSBuild]::GetPathOfFileAbove(Walterlv.DemoSolution.sln)) 最终可以得到 D:\walterlv...\root\Walterlv.DemoSolution.sln 路径。...需要注意的是: 此方法不支持通配符,也就是说不能使用 *.sln 来找路径 此方法不支持通过文件夹去找,也就是说不能使用我们熟知的 .git 等等文件夹去找路径 此方法传入的文件支持使用路径,也就是说可以使用类似于

19640

nuget.exe 还原解决方案 NuGet 包的时候出现错误:调用的目标发生了异常。Error parsing the nested project section in solution file

例如下面的 sln 片段: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Project("{FAE04EC0-301F-...可以阅读: 如何安装和准备 Visual Studio 扩展/插件开发环境 - walterlv 我在另外的博客中写了解决方案中项目类型的内容: 理解 Visual Studio 解决方案文件格式(.sln...) - walterlv 解决方案文件 sln 中的项目类型 GUID - walterlv 而如果是 nuget 自动识别出来的 MSBuild 版本过旧,则你会同时看到下面的这段提示: NuGet...Error parsing solution file at C:\walterlv\Walterlv.Demo\Walterlv.Demo.sln: 调用的目标发生了异常。...version 自动查找路径不合适的问题 - walterlv 可以通过设置环境变量的方式来解决自动查找版本错误的问题。

26920
领券