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

时间:2018-06-15 05:52:17

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

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

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

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

2 个答案:

答案 0 :(得分:1)

  

.targets文件在哪里,以及.net core支持

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

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

.net核心项目也支持此.targets文件。作为测试,我在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核心项目后,然后构建项目我可以获得带有消息的输出窗口&#34; This is Test Sample!&#34;

答案 1 :(得分:1)

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

  • 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文件的Imports。