我想通过nuget将我的.targets文件添加到项目中。我有下一个.nuspec文件:
<package >
<metadata>
...
</metadata>
<files>
<file src="..\..\Rcs\Rcs\bin\Release\Rcs.targets" target="build\Rcs.targets" />
<file src="..\..\Rcs\Rcs\bin\Release\Rcs.dll" target="lib\Xamarin.iOS10\Rcs.dll" />
<file src="..\..\Rcs\Rcs\bin\Release\*.dll" />
<file src="..\..\Rcs\Rcs\bin\Release\*.config" />
</files>
</package>和.targets文件:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RcsDirectory Condition="$(RcsDirectory) == '' Or $(RcsDirectory) == '*Undefined*'">$(MSBuildThisFileDirectory)..\..\</RcsDirectory>
</PropertyGroup>
<UsingTask
TaskName="Rcs.RcsBuildTask"
AssemblyFile="$(RcsDirectory)Rcs.dll" />
<Target AfterTargets="Build" Name="RcsBuildTask">
<RcsBuildTask
ProjectPath="$(MSBuildProjectFullPath)"
RootNamespace="$(RootNamespace)"
/>
</Target>
</Project>安装此nuget后,未将新项添加到项目中。任何帮助我们都将不胜感激。
发布于 2018-10-12 11:06:39
您确定.targets文件真的没有导入到您的Nuget包中吗?
除了.nuspec文件之外,您还应该使用Nuget CLI来打包文件。不要使用dotnet CLI
一旦您使用nuget pack命令创建了.nupkg文件,您就可以使用Nuget Package Explorer或简单地使用WinRar打开您的包(我相信这也适用于7-zip)。
此时,如果您看到您的.targets文件或Rcs.dll丢失,这意味着您的.nuspec文件有问题。确保您的.nuspec文件的名称为ProjectName.nuspec
或
在.csproj中指定.nuspec文件
<PropertyGroup>
[...]
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<NuspecFile>ProjectName.nuspec</NuspecFile>
[...]
</PropertyGroup>如果您的.nupkg中有.targets文件,那么这意味着它的执行并不是您所期望的那样。
安装Nuget包时,文件会存储到Nuget cache中。在Windows上,它位于%userprofile%\.nuget\packages。您的.targets文件和Rcs.dll也应该在那里
首先,您可以在.targets文件中包含以下内容
<Target Name="TestMessage" AfterTargets="Build" >
<Message Text="***********************************************************" Importance="high"/>
<Message Text="$(MSBuildThisFileDirectory)" Importance="high"/>
<Message Text="***********************************************************" Importance="high"/>
</Target>在构建项目时,您将看到当前文件夹实际上是您的缓存(而不是项目的目录)
如果我理解的话,你想要的是将你的Rcs.dll复制到你的bin文件夹中。要实现这一点,可以在.targets文件中编写类似的任务
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\..\lib\Xamarin.iOS10\Rcs.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>这是一种正常行为,即不会将.targets文件复制到引用Nuget包的项目中。.targets文件应该保留在Nuget缓存中,但是从那里执行MsBuild命令来复制Rcs.dll文件。
我希望你能理解我的答案,它能解决你的问题。
发布于 2021-07-14 12:17:13
我发现,通过使用NuGet Package Explorer,必须正确命名目标文件。默认情况下,NPE使用.targtets。似乎其他名称可能不起作用。
我的Id是"Handy.TargetFrameworkVersionCumulativePreprocessorSymbols",,但我已将目标文件命名为"HandyTargetFrameworkVersionCumulativePreprocessorSymbols.targets".
一旦我在任何地方使用了"Handy.TargetFrameworkVersionCumulativePreprocessorSymbols“,它就像预期的那样工作。
https://stackoverflow.com/questions/52556376
复制相似问题