自定义 Nuget 包文件不会使用 Web 发布部署额外的文件



我们有一个内部开发和使用的nuget包。 一个包具有需要部署的其他非托管 DLL。 在VS2015中,我右键单击Web应用程序项目并发布到测试服务器。 包中的任何非托管 DLL 均未发布,但它们位于我计算机上的 bin 文件夹中。

这是我在包目标文件中尝试的内容:

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="ExtraFilesPublishTarget">
<Message Text="########### NUGET DEPLOY ###########"/>
<ItemGroup>   
<DistFiles Include="$(MSBuildThisFileDirectory)..libdist***.*"/>
<FilesForPackagingFromProject Include="%(DistFiles.Identity)">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target> 
<Target Name="DistBuildTarget" AfterTargets="Build">
<ItemGroup>
<DistFiles Include="$(MSBuildThisFileDirectory)..libdist***.*"/>
</ItemGroup>
<Microsoft.Build.Tasks.Copy SourceFiles="@(DistFiles)" DestinationFiles="@(DistFiles->'$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<PropertyGroup>
<copyallfilestosinglefolderforpackagedependson>
ExtraFilesPublishTarget;
$(copyallfilestosinglefolderforpackagedependson);
</copyallfilestosinglefolderforpackagedependson>
<copyallfilestosinglefolderformsdeploydependson>
ExtraFilesPublishTarget;
$(copyallfilestosinglefolderforpackagedependson);
</copyallfilestosinglefolderformsdeploydependson>
</PropertyGroup>
</Project>

发布时,我看到 NUGET 部署消息,但输出窗口中的下一行是"目标"ExtraFilesPublishTarget"已跳过。以前建造成功。

上面的链接(http://blog.mjjames.co.uk/2012/10/deploying-non-project-files-with-web.html(解决了我的问题。

我确实遇到了另一个未找到目标的问题。为了节省测试时间,我将在解决方案的包文件夹中编辑我的 .targets 文件。 如果在本地 .targets 文件中添加或重命名目标,VS2015 将找不到更改,因为它会缓存目标名称。 您必须关闭VS或重新安装软件包才能找到。 您可以更改目标中的元素,只是不能更改目标的名称或添加目标。

最新更新