【问题标题】:Where is the .targets file, and if it supported by .net core.targets 文件在哪里,以及 .net 核心是否支持
【发布时间】:2018-11-24 23:00:03
【问题描述】:

我有一个自定义的 nuget 包,其中包括 \build 文件夹中的 .targets 文件。当我将它安装到.net框架项目时,安装后,我们可以在项目文件中看到以下导入列表:

<Import Project="..\packages\xxxx\build\xxxx.targets" Condition="Exists('..\packages\xxxx\build\xxxx.targets')" />

但是当我将它安装到.net core项目时,我在项目文件中找不到这个导入列表,如果.net core支持的话,我可以在哪里找到我的.targets文件?

【问题讨论】:

    标签: visual-studio-2017 .net-core nuget


    【解决方案1】:

    .targets 文件在哪里,.net core 是否支持它

    .targets文件包含在obj文件夹的project.assets.json文件中,可以查看project.assets.json文件,可以得到如下代码:

      "xxxx/1.0.0.0": {
        "type": "package",
        "build": {
          "build/xxxx.targets": {}
        }
      },
    

    而且这个.targets 文件也被.net core 项目支持。作为测试,我在 nuget 包中创建了一个测试 .targets 文件,例如:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Target Name="Test" AfterTargets="Build">
        <Message Text="This is Test Sample!"></Message>
      </Target> 
    </Project>
    

    将此 nuget 包安装到 .net 核心项目后,然后构建项目,我可以获得带有消息“This is Test Sample!”的输出窗口

    【讨论】:

      【解决方案2】:

      对于使用 PackageReferences 的项目,可以在两个文件中找到导入:

      • obj/ProjectName.nuget.g.props
      • obj/ProjectName.nuget.g.targets

      将 ProjectName 替换为您的项目名称。

      例如,使用 Xamarin.Forms 的 .NET Standard 项目将具有类似于以下内容的 .nuget.g.targets 文件:

      <?xml version="1.0" encoding="utf-8" standalone="no"?>
      <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <PropertyGroup>
          <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
        </PropertyGroup>
        <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
          <Import Project="$(NuGetPackageRoot)xamarin.forms/3.0.0.482510/build/netstandard2.0/Xamarin.Forms.targets" Condition="Exists('$(NuGetPackageRoot)xamarin.forms/3.0.0.482510/build/netstandard2.0/Xamarin.Forms.targets')" />
          <Import Project="$(NuGetPackageRoot)netstandard.library/2.0.1/build/netstandard2.0/NETStandard.Library.targets" Condition="Exists('$(NuGetPackageRoot)netstandard.library/2.0.1/build/netstandard2.0/NETStandard.Library.targets')" />
        </ImportGroup>
      </Project>
      

      .nuget.g.props 文件将包含您正在使用的 NuGet 包包含的任何 .props 文件的导入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-28
        • 1970-01-01
        • 2017-12-09
        • 2021-01-09
        • 2021-06-19
        • 2017-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多