为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在.net 4.5项目中使用分析仪吗?

我可以在.net 4.5项目中使用分析仪吗?

C#
守候你守候我 2021-05-11 17:50:06
我在GitHub上有一个OSS项目,使用Visual Studio 2017在AppVeyor CI上针对.NET 4.5构建。该解决方案构建了一个COM加载项,该扩展扩展了一个著名的可怕的旧版Win32 IDE,并且我们已经确定,我们需要运行的最早Windows版本是Vista(因此,.net 4.5及其async/await出色之处)。到现在为止还挺好。现在,建立一个COM可见的.net DLL是一回事,而建立一个在进程内运行的COM加载项则是另一回事:我们不能依赖.net,该加载项托管在最近20年更新的模糊应用程序中。垃圾收集不确定地清理RCW,因此很容易意外泄漏COM对象并引入严重的运行时(实际上是拆机)问题,因此,核心贡献者之一是在解决方案中添加Roslyn分析器项目,这将有助于新老参与者这样,通过防止会导致这种泄漏的构建。因此,解决方案中的所有.csproj文件都得到了以下差异:+  <ItemGroup>+    <Analyzer Include="..\RubberduckCodeAnalysis\RubberduckCodeAnalysis\bin\Release\netstandard1.3\RubberduckCodeAnalysis.dll" />+  </ItemGroup>因此,需要先构建分析器项目。.sln差异显示了新分析器项目的GUID:+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RubberduckCodeAnalysis", "RubberduckCodeAnalysis\RubberduckCodeAnalysis\RubberduckCodeAnalysis.csproj", "{A2B4E037-A446-41B9-A304-F91C7C7A6972}"+EndProject然后.sln diff显示解决方案的一个项目,以及如何将分析器作为依赖项添加以控制构建顺序: Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rubberduck.Parsing", "Rubberduck.Parsing\Rubberduck.Parsing.csproj", "{A4A618E1-CBCA-435F-9C6C-5181E030ADFC}"    ProjectSection(ProjectDependencies) = postProject+       {A2B4E037-A446-41B9-A304-F91C7C7A6972} = {A2B4E037-A446-41B9-A304-F91C7C7A6972}        {8CE35EB3-8852-4BA1-84DD-DF3F5D2967B0} = {8CE35EB3-8852-4BA1-84DD-DF3F5D2967B0}    EndProjectSection EndProject这使我陷入了AppVeyor构建错误:C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets(1603,5):error:Project'C:\ projects \ rubberduck \ RubberduckCodeAnalysis \ RubberduckCodeAnalysis \ RubberduckCodeAnalysis.csproj'目标为'netstandard1.3'。面向'.NETFramework,Version = v4.5'的项目无法引用它。[C:\ projects \ rubberduck \ Rubberduck.Parsing \ Rubberduck.Parsing.csproj]在本地调试版本中,可以手动构建分析器项目,然后可以很好地构建和分析解决方案的其余部分,而无需了解项目的依赖性。不过,在AppVeyor CI构建服务器上,分析器项目只是解决方案一部分的DLL,如果我们不告诉它首先构建,则将找不到分析器DLL,也不会构建解决方案。看起来我被卡住了,无论我从哪一边看问题。我的用户都是Win32用户,我不在乎可移植性。但是,我确实希望在Windows Vista上运行,所以有没有办法让我可以在CI上构建它而无需将项目重新定位到.NET Standard 1.3?
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

如果查看.NET Standard文档,则会看到1.3版与.NET Framework 4.6兼容:

//img1.sycdn.imooc.com//60a9ab5900019d1c10540538.jpg

您说需要支持Windows Vista,这很幸运,因为Windows Vista中支持的.NET的最新版本(需要SP2)是.NET Framework 4.6:.NET Framework系统要求

因此,我建议您将所有项目都更新到.NET Framework 4.6,并且不应再看到任何兼容性问题。


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信