Nuget库-将库的DLL复制到当前项目的输出目录

时间:2019-01-06 17:50:55

标签: c# .net visual-studio nuget nuget-package

因此,最好的解释一下我想做什么:

如果在项目中安装nuget软件包NUnitTestAdapter,则在构建项目时,项目的输出目录中将包含NUnit3.TestAdapter.dll。

我也想这样做。我有一个要打包的库,但是当我将其安装到另一个项目并进行构建时,不像NUnit那样包含我的dll。

关于我为什么需要这样做,我正在编写一个测试报告器,它为所有运行的测试生成JSON,XML,HTML等报告。 我正在AppDomain.CurrentDomain.ProcessExit事件中运行此事件,但是该时间限制为2秒左右,因此,如果2秒钟内未生成我的报告,它将无法正常工作。因此,取而代之的是,在processexit上,它将执行我的报表DLL,而该DLL没有时间限制。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

Nuget库-将库的DLL复制到当前项目的输出目录

当您下载软件包(?i)(?!=[aeiou])(\w)led 并使用NuGet软件包浏览器(从Microsoft Store获取)打开它时,您会发现以下内容:

enter image description here

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相同的名称。