因此,最好的解释一下我想做什么:
如果在项目中安装nuget软件包NUnitTestAdapter,则在构建项目时,项目的输出目录中将包含NUnit3.TestAdapter.dll。
我也想这样做。我有一个要打包的库,但是当我将其安装到另一个项目并进行构建时,不像NUnit那样包含我的dll。
关于我为什么需要这样做,我正在编写一个测试报告器,它为所有运行的测试生成JSON,XML,HTML等报告。 我正在AppDomain.CurrentDomain.ProcessExit事件中运行此事件,但是该时间限制为2秒左右,因此,如果2秒钟内未生成我的报告,它将无法正常工作。因此,取而代之的是,在processexit上,它将执行我的报表DLL,而该DLL没有时间限制。
谢谢!
答案 0 :(得分:2)
Nuget库-将库的DLL复制到当前项目的输出目录
当您下载软件包(?i)(?!=[aeiou])(\w)led
并使用NuGet软件包浏览器(从Microsoft Store获取)打开它时,您会发现以下内容:
在 build 文件夹中有一个NUnit3TestAdapter
,其属性为NUnit3TestAdapter.props
:
CopyToOutputDirectory
因此,当我们将此软件包安装到项目中时,此文件<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)NUnit3.TestAdapter.dll">
<Link>NUnit3.TestAdapter.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)NUnit3.TestAdapter.pdb" Condition="Exists('$(MSBuildThisFileDirectory)NUnit3.TestAdapter.pdb')">
<Link>NUnit3.TestAdapter.pdb</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)nunit.engine.dll">
<Link>nunit.engine.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)nunit.engine.api.dll">
<Link>nunit.engine.api.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</Content>
</ItemGroup>
</Project>
将导入到项目文件中,然后dll文件将被复制到输出文件夹中。
如果需要,也可以使用此方法。
希望这会有所帮助。
答案 1 :(得分:1)
因此,在Leo Liu-MSFT的帮助下,我已经做到了。
首先,我必须创建一个道具文件,如Leo的答案 然后,我必须在项目上创建一个构建后事件,将props文件复制到我的目标目录中。
copy /Y "$(ProjectDir)$(TargetName).props" "$(TargetDir)$(TargetName).props"
然后我创建了一个nuspec文件,该文件将props和dll从我的目标目录复制到nuget包中的构建目录中
<files>
<file src="bin\Release\**\Report.props" target="build" />
<file src="bin\Release\**\Report.dll" target="build" />
</files>
然后通过nuget pack ###.nuspec
然后通过nuget导入库时,props文件将在成功构建后自动推送我的文件。
我必须确保将props文件称为与项目ID相同的名称。