1 回答
TA贡献1862条经验 获得超6个赞
Nuget:包含一个 exe 作为运行时依赖项
首先,我知道你想为未来使用一些技术,但我们要知道,这些面向未来的技术往往有一定的限制和条件。
例如,<contentFiles>用于NuGet 4.0 + 和PackageReference,Visual Studio 2015不支持它们。有关详细信息,请参阅将 contentFiles 元素用于内容文件。
如果您对此感兴趣<contentFiles>,可以阅读博客NuGet 现在已完全集成到 MSBuild 中。
现在回到我们的问题,根据上面的信息,我们<contentFiles>在使用Visual Studio 2015时不应该使用。 为了解决这个问题,我们需要.targets在构建项目时在nuget包中添加一个文件:
.targets文件内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="$(ProjectDir)myexe.exe">
<Link>myexe.exe</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CustomToolNamespace></CustomToolNamespace>
</None>
</ItemGroup>
</Project>
该.nuspec文件类似以下内容:
<files>
<file src="build\YouNuGetPackageName.targets" target="build\YouNuGetPackageName.targets" />
<file src="content\myexe.exe" target="content\myexe.exe" />
</files>
注意: .targets 文件的名称应与您的 nuget 包名称相同。
通过这种方式,当您构建项目时,MSBuild/VS 会将文件复制myexe.exe到输出文件夹。
此外,如果要将文件复制myexe.exe到其他目的地,可以.targets使用复制任务替换文件内容,例如:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyMyexe" BeforeTargets="Build">
<Message Text="Copy CopyMyexe to the folder."></Message>
<Copy
SourceFiles="$(ProjectDir)myexe.exe"
DestinationFolder="xxx\xxx\xx\myexe.exe"
/>
</Target>
</Project>
有关一些帮助,请参阅创建本机包和类似问题。
希望这可以帮助。
- 1 回答
- 0 关注
- 216 浏览
添加回答
举报