Visual Studio 2019,.Net Standard 2.0
如何为使用中的项目添加自定义msbuild目标文件? 官方支持的方法是什么?
我已经尝试过:
Nuspec:
<?xml version="1.0"?>
<package >
<metadata>
<id>TestingNugetContent</id>
<version>1.0.10</version>
<title>Blah</title>
<authors>Me</authors>
<owners>Me</owners>
<licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
<projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
<iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Blah</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2019</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="Immutable\*.*" target="content/Immutable/" />
<file src="Build\*.*" target="build/netstandard2.0/" />
</files>
</package>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<NoPackageAnalysis>true</NoPackageAnalysis>
<NuspecFile>TestingNugetContent.nuspec</NuspecFile>
<IntermediatePackDir>$(MSBuildProjectDirectory)/bin/$(Configuration)/publish/</IntermediatePackDir>
<PublishDir>$(IntermediatePackDir)$(TargetFramework)/</PublishDir>
<NuspecProperties>publishDir=$([MSBuild]::NormalizeDirectory($(IntermediatePackDir)))</NuspecProperties>
<Version>1.0.10</Version>
</PropertyGroup>
<ItemGroup>
<Compile Remove="build\**" />
<EmbeddedResource Remove="build\**" />
<None Remove="build\**" />
</ItemGroup>
<ItemGroup>
<None Include="build\netstandard2.0\TestingNugetContent.targets" />
</ItemGroup>
<Target Name="PublishAll" BeforeTargets="GenerateNuspec">
<ItemGroup>
<_TargetFramework Include="$(TargetFrameworks)" />
</ItemGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Publish" Properties="TargetFramework=%(_TargetFramework.Identity)" />
</Target>
</Project>
在安装Nuget程序包后,检查使用者的<***>。csproj.nuget.g.targets文件是否缺少此自定义目标的导入项目标签
答案 0 :(得分:1)
根据文档the props and targets file names must match the package id exactly。您的nuspec
将<id>
列为TestingNugetContent
,因此文件必须为TestingNugetContent.props
和TestingNugetContent.targets
。它们应该直接位于软件包的build/
文件夹中,也可以位于build/<tfm>/
文件夹中(我希望更明确一些,所以我建议您使用netstandard2.0
TFM)。现在,您的csproj似乎指定了一个build\netstandard2.0\TestingNugetContent.targets
,看起来很正确,所以我只能猜测它没有以某种方式打包到正确的位置。
我目前没有时间展示如何打包的示例,但是您可以使用NuGet package explorer检查nupkg
的内容,也可以将其作为zip文件打开,查看“错误”,然后调整项目并重试。
仅供参考,您完全不需要使用nuspec,可以使用MSBuild PackagePath
metadata on items来指定MSBuild项目的打包位置。我不清楚您的PublishAll
目标的目的是什么。如果在尝试包含目标文件时添加了它,则可以将其删除。