2017-08-17 51 views
0

我们有一个我们在内部开发和使用的nuget包。一个软件包有需要部署的附加的非托管DLL。在VS2015中,我右键单击Web应用程序项目并发布到测试服务器。包中的所有非托管DLL都没有发布,但它们位于我的机器上的bin文件夹中。自定义Nuget包文件没有通过Web部署额外的文件发布

这里就是我想在包的目标文件:

<?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消息,但在输出窗口下一行是“目标‘ExtraFilesPublishTarget’跳过。以前建成成功。“

+0

我发现另一篇文章看起来像涵盖了这个问题。 http://blog.mjjames.co.uk/2012/10/deploying-non-project-files-with-web.html 我现在唯一的问题是目标名称不是由VS发现的。当我们将内容复制到它的csproj文件时,它就起作用了。看起来像项目文件没有看到.target文件中的目标。 – BCarlson

回答

0

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

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

相关问题