使用.NET Framework的Directory.Build.Prop添加包
我有一个visualstudio解决方案,我试图在所有项目中使用buildprop文件添加代码分析器。我有一些依赖.NET核心和框架的项目。我有下面的Directory.Build.Prop文件使用.NET Framework的Directory.Build.Prop添加包,.net,visual-studio,msbuild,.net,Visual Studio,Msbuild,我有一个visualstudio解决方案,我试图在所有项目中使用buildprop文件添加代码分析器。我有一些依赖.NET核心和框架的项目。我有下面的Directory.Build.Prop文件 <Project> <Choose> <When Condition="$(UsingMicrosoftNETSdk) == 'true'"> <PropertyGroup Condition="'$
<Project>
<Choose>
<When Condition="$(UsingMicrosoftNETSdk) == 'true'">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<RunCodeAnalysis>true</RunCodeAnalysis>
</PropertyGroup>
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory).editorconfig" Link=".editorconfig" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</When>
<Otherwise>
</Otherwise>
</Choose>
</Project>
假的
真的
全部的
运行时间;建设;本地人;内容文件;分析仪;可传递的
现在,我可以使用MicrosoftNetsdk属性区分.Net核心项目和框架项目,因为所有新的核心项目都使用SDK风格的项目,而框架项目则不是这样。但是我不确定我应该在“否则”部分添加什么来添加这些分析器
由于使用的分析器与平台无关,因此我尝试使用包引用或引用元素来添加它。但它并没有像预期的那样工作,我看到analyzer也并没有工作,加上它弄乱了框架项目中的其他引用(在引用上得到警告标志,项目就不会生成)
另外,我认为这与packages.config文件中管理的框架项目中的包引用有关,但我不确定我们是否可以从build.props中对其应用一些东西。实际上,Net framework项目支持包引用。看 如果您想使用
Directory.Build.props
文件来安装一些带有packages.config numget管理格式的用于Net Framework项目的numget软件包,这是不可能的,因为packages.config
numget管理格式使用packages.config
来安装软件包,并且proj
文件不能修改packages.config
文件
但是只有PackageReferencenuget management可以使用proj安装nuget软件包,而不需要packages.config
文件
因此,现在唯一要考虑的是如何更改netframework
项目,该项目已使用packages.config
安装了一些nuget软件包
建议
在执行此操作之前,您可以为所有项目进行备份
1)所以打开VS上的所有net framework项目,然后右键单击每个packages.config
文件-->单击Migrate packages.config到PackageReference
然后,您的所有网络框架项目都可以像网络核心项目那样使用PackageReference
2)然后,为目录.Build.Prop
文件上的net framework项目添加这些,就像您为net core
所做的那样
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
我正在尝试这样做,但其中一个软件包说它不适合此迁移。找到原因,它的asp.net项目。。。迁移目前不适用于C++和ASP.NET项目。所以,我再次回到原点谢谢你的反馈。更多信息将帮助我们更快地解决问题。我已更新了我的答案,请参见
更新1
。已经提供了更多的解决方案。嗨,关于这个问题有什么更新吗?嗨,包确实按照你建议的方式进行了移植,但是当我构建项目时,所有的包引用似乎都从列表中消失了
<Project>
<Choose>
<!--exlcude c++ projects and all the net framework and net core projects can use PackageReference-->
<When Condition="'$(PlatformToolset)'==''">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<RunCodeAnalysis>true</RunCodeAnalysis>
</PropertyGroup>
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory).editorconfig" Link=".editorconfig" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</When>
<Otherwise>
</Otherwise>
</Choose>
</Project>