是否有一种方法告诉Visual Studio仅在.NET Core解决方案中仅使用特定类型的参考文献



我一直在Visual Studio中遇到问题,在该问题中,我在本地Nuget Cache中引用了Nuget软件包,但在Nuget软件包中没有添加作为该项目的Nuget软件包参考。Visual Studio默认为在我的本地文件系统上的软件包中添加提示路径参考,而不是软件包参考。即这个

<ItemGroup>
    <Reference Include="Awesome.Package.dll">
        <HintPath>local/path/to/NuGet/cache/Awesome.Package.dll</HintPath>
    </Reference>
</ItemGroup>

而不是这个

<ItemGroup>
    <PackageReference Include="awesome-package" Version="x.y.z" />
</ItemGroup>

现在,我知道如何正确安装Nuget软件包,这不是问题。我想防止Visual Studio/.NET(以责任方为准(到达解决方案的DLL参考。在我的项目中,只有3种有效的参考文献:

  • 解决方案中的其他项目
  • .NET Core SDK
  • <PackageReference>标签引用的Nuget软件包

如果VS/.NET无法参考这样的代码,则我需要提出错误或以其他方式表示我试图使用的代码不存在。假设可以在感觉到DLL的任何地方都可以伸出手是可以接受的。不良的参考可以承诺,这会导致我的构建系统失败,而其他团队成员在包含不良引用的投入时会遇到错误。*

是否有一种方法可以使白名单/黑名单特定表示Visual Studio和/或.Net Core中引用外部代码的含义

*是的,我们可以在提交代码或进行PRS时更好地过滤这些问题,但这依赖于人类来捕获错误,这些错误首先是由软件

有没有办法告诉视觉工作室只使用特定种类的 .NET核心解决方案中的参考?

我恐怕答案是负面的。众所周知,VS中没有这样的选择可以以这种方式管理.NET核心项目中的参考。

您遇到的原始问题可能与您消费包装的方式有关。在.NET核心项目中,如果您通过Nuget Package Manager UIPackage Manager Console添加对该Nuget软件包的引用,则应是正常的PackageReference格式。因此,实际上,您需要做的是使用正确的方法消耗Nuget软件包,因为VS不支持您想要的任何选项的行为。

*是的,在提交代码或进行PRS时,我们可以更好地过滤这些问题,但这依赖于人类来捕捉 首先可以阻止的错误 软件

目前,由于VS支持我们以Reference格式引用正常组件的方案,因此IntelliSense在.NET Core Project Project文件中具有此类参考时不会引起错误。作为替代方案,也许您可以在将其提交回库之前在本地构建项目。

尝试一个Directory.build.props文件。创建一个文本文件并将其重命名为Directory.Build.props,您可以在其中添加内容,例如:

<Project>
  <Target Name="CheckIfThereExistsNotValidReferences" BeforeTargets="build">
    <ItemGroup>
      <InValidReferences Include="@(Reference)" />
      <SdkReferences Include="@(Reference)" Condition="$([System.String]::new('%(Reference.HintPath)').Contains('C:Program FilesdotnetsdkNuGetFallbackFolder'))" />
      <InValidReferences Remove="@(SdkReferences)" />
    </ItemGroup>
    <Message Text="aaaaaaaaa @(InValidReferences)" Importance="high" Condition="'@(InValidReferences)'!=''" />
    <Error Text=" Raise the error cause there exists invalid references!" Condition="'@(InValidReferences)'!=''" />
  </Target>
</Project>

将此文件放入解决方案目录中,然后将有助于检查项目文件中不需要的参考格式。如果存在,它将引起错误。它在我本地的计算机中起作用。在解决方案目录中,每次您在进行更改之前在本地构建它时,都存在您不喜欢的Reference格式,构建将失败并引起错误。但这仅是为了构建时间,提出诸如Intellisense方法之类的错误,现在不支持这一点。您可以在开发人员社区中发布Suggest a Feature请求。希望它有帮助。

相关内容

最新更新