我们有一个内部开发和使用的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;
答案 0 :(得分:0)
上面的链接(http://blog.mjjames.co.uk/2012/10/deploying-non-project-files-with-web.html)解决了我的问题。
我确实遇到了另一个未找到目标的问题。为了节省测试时间,我将编辑我的解决方案的packages文件夹中的.targets文件。如果在本地.targets文件中添加或重命名目标,VS2015将无法找到更改,因为它会缓存目标名称。您必须关闭VS或重新安装包才能找到它。您可以更改目标中的元素,只是无法更改目标的名称或添加目标。