【问题标题】:Consuming nuget package containing .targets file via PackageReference通过 PackageReference 使用包含 .targets 文件的 nuget 包
【发布时间】:2019-03-21 11:29:39
【问题描述】:

我有 .NET452 项目 - 我想使用 nuget 将其称为 Consumer.csproj,我们将其称为 SharedTargets,其中包含来自 msbuild 的一些自定义目标文件 (SharedTargets.targets)。

我正在使用PackageReference 格式,现在(与以前相比)nuget 包正在恢复到共享文件夹(%userprofile%.nuget\packages),我不确定它是否好通过那个来引用它的想法(感觉不对)。

例如:

<PackageReference Include="SharedTargets">
  <Version>1.0</Version>
</PackageReference>
<Import 
  Project="$(USERPROFILE)\.nuget\packages\SharedTargets\1.0\SharedTargets.targets"
/>

这仅在 VS 中有效,从命令行运行 (msbuild) 我遇到了鸡蛋问题:

确认&lt;Import&gt; 声明中的路径正确,并且 该文件存在于磁盘上。

显然,因为我需要先恢复 nuget 才能使用它:)

所以问题:

  • 有没有更优雅的方法来解析项目文件中 nuget 包的路径
  • 有没有办法让 msbuild 成功(即在导入 SharedTargets.target 之前恢复包)

【问题讨论】:

    标签: msbuild nuget


    【解决方案1】:

    您不应尝试手动导入通过 NuGet 分发的目标。

    将您的 .targets 文件放在包内的 build 子文件夹中,并将其命名为 SharedTargets.targets(包 id + .targets),NuGet 将自动包含目标 - 对于 packages.config 项目,它将修改项目文件在安装和 PackageReference 项目时,将通过修改 obj\ 目录中隐式生成的目标文件来导入目标。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多