我想开始使用Microsoft.Net.Compilers https://www.nuget.org/packages/Microsoft.Net.Compilers/简化我们的构建服务器的工作。但是,我只能让它在每个项目级别 https://stackoverflow.com/a/32010632/7586,通过将包添加到所有项目。
这是有问题的,因为必须将包添加到每个新创建的项目中。这可能会导致代码在开发人员的计算机(具有最新的编译器)上编译,但在构建服务器上失败。我们的项目很多(超过100个),所以这种情况比较常见。
有没有办法使用Microsoft.Net.Compilers
在解决方案级别?
如果没有受支持的方式,是否有一个我不必在构建服务器上安装的命令行工具?或者,这不是这些工具的预期用途吗?
如果在 VS 2017(更新 1,内部版本号 >= 15.1.*)中,您可以使用集成的 MSBuildPackageReference
机制代替packages.config
以前仅适用于 .net core 和 .net standard 项目类型。请参阅封装参考文档 https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files?WT.mc_id=DT-MVP-5002999以及NuGet 博客文章 http://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html宣布支持,特别是“非 .NET Core 的其他项目类型怎么样?”部分。
The idea is to switch from installing a package and adding it to packages.config for restore to just specifying an MSBuild items in the csproj file. This can be set up for new projects in VS:
(animation is from the NuGet blog post linked above)
MSBuild 15 的一个新功能是它支持自动将具有特殊名称的文件包含在目录层次结构中。那些是Directory.Build.props
and Directory.Build.targets
它将包含在项目文件内容之前(道具)和之后(目标)(有一个错误.targets
即将发布修复程序的多目标项目的版本)。
如果您创建一个Directory.Build.props
在解决方案级别包含以下内容的文件,其下方目录层次结构中的所有项目将继承它的内容,您可以强制对每个项目添加 NuGet 依赖项:
<Project>
<ItemGroup>
<PackageReference Include="Microsoft.Net.Compilers" Version="2.1.0"/>
</ItemGroup>
</Project>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)