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

时间:2017-08-17 18:31:07

标签: c# msbuild nuget-package

我们有一个内部开发和使用的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)..\lib\dist\**\*.*"/>
    <FilesForPackagingFromProject Include="%(DistFiles.Identity)">
      <DestinationRelativePath>\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
    </ItemGroup>
  </Target> 
  <Target Name="DistBuildTarget" AfterTargets="Build">
    <ItemGroup>
      <DistFiles Include="$(MSBuildThisFileDirectory)..\lib\dist\**\*.*"/>
    </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 DEPLOY消息,但是输出窗口中的下一行是&#34; Target&#34; ExtraFilesPublishTarget&#34;跳过。以前成功构建。&#34;

1 个答案:

答案 0 :(得分:0)

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

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