【问题标题】:Microsoft.Build.CentralPackageVersions and folder structureMicrosoft.Build.CentralPackageVersions 和文件夹结构
【发布时间】:2021-05-19 09:45:11
【问题描述】:

大家好,我想这样安排我的项目

 | Build
        Packages.props 
 | Output
 | Source
        Project1-Folder
                  Project1.csproj
        Project2-Folder
                  Project2.csproj
 Sln 
 Directory.Build.props

在此结构中使用 Packages.props 时,无法识别项目 1 或 2 ,但如果我将其移至根目录,它可以正常工作。任何想法如何使它在这种结构下工作

我尝试使用 Directory props ,但它给出了循环错误 我的 Directory.Build.props 看起来像

<Project>   
  <PropertyGroup>
    <EnableCentralPackageVersions>true</EnableCentralPackageVersions>
    <CentralPackagesFile>$(MSBuildProjectDirectory)\Build\Packages.props</CentralPackagesFile> 
  </PropertyGroup>
</Project>

和packages.prop

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
  <PackageReference Update="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
</Project>

【问题讨论】:

    标签: .net msbuild asp.net-core-3.1


    【解决方案1】:

    您可以通过CentralPackagesFile 属性指定Packages.props 文件的路径。因此,您可以将以下内容添加到您的 .csproj 文件中:

    <PropertyGroup>
      <CentralPackagesFile>$(MSBuildProjectDirectory)\..\..\Build\Packages.props</CentralPackagesFile>
    </PropertyGroup>
    

    除了将其单独添加到每个项目之外,您还可以为您的项目创建一个Directory.Build.props 文件,其中包含以下内容:

    <Project>
      <PropertyGroup>
        <CentralPackagesFile>$(MSBuildThisFileDirectory)\Build\Packages.props</CentralPackagesFile>
      </PropertyGroup>
    </Project>
    

    请注意,您必须将此 Directory.Build.props 文件放在根目录或 Source/ 目录中才能获取它。

    【讨论】:

    • 嗨@poke 我更新了我的问题,它给出了循环错误你能帮我解决这个问题吗
    • @Ali 抱歉,我为 Directory.Build.Props 文件使用了错误的变量。它应该使用MSBuildThisFileDirectory 来构建路径。当我尝试这个时,它适用于您的文件夹设置。
    猜你喜欢
    • 2014-07-24
    • 2012-06-02
    • 1970-01-01
    • 2014-11-09
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多