我遇到了我的发布文件最初正确的情况,但之后被其原始版本取代。我怀疑事件的顺序是错误的,再加上根目录中的内容。
基本上我已经成功设置了我的发布环境,它执行一个自定义命令来创建一些JavaScript(在我的项目之外创建)。因为源代码管理中的文件需要引用这个新创建的JavaScript,所以我只是将文件(MyControl.ascx)复制到临时位置(因此它丢失了TFS的读取锁定)并且我正在使用自定义命令更新引用JS。完成后,我收集所有文件(自定义JavaScript,以及编辑后的MyControl.ascx临时位置)并发布。
它首先发布所有内容,所以我看到了新的JS以及更新的MyControl.ascx,但几分钟后它完成了发布,而Control看起来就像它在根目录中的样子。
我认为发生的事情是它只是在我的自定义控件(位于另一个目录中)中推出根目录(包括MyControl.ascx)中的内容。 / p>
<PropertyGroup>
<PipelineCollectFilesPhaseDependsOn>
CustomCollectFiles;
$(PipelineCollectFilesPhaseDependsOn);
</PipelineCollectFilesPhaseDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
Exec Command="MyCommand.bat"
<ItemGroup>
<_BundledJS Include="$(MSBuildThisFileDirectory)..\..\Includes\javascript\*.js" />
<FilesForPackagingFromProject Include="%(_BundledJS.Identity)">
<DestinationRelativePath>Includes\javascript\%(Filename)%(Extension)
</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
<ItemGroup>
<_UpdatedControl Include="$(MSBuildThisFileDirectory)..\..\TempArea\MyControl.ascx" />
<FilesForPackagingFromProject Include="%(_UpdatedControl.Identity)">
<DestinationRelativePath>Controls\%(Filename)%(Extension)
</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
所以你可以在上面看到我在...... \ TempArea \ MyControl.ascx中采取了一些东西并将其推送到Controls \%(文件名)%(扩展名)。
任何想法我怎么能告诉它基本上保留我的.... \ TempArea \ MyControl.ascx而不用项目中的原始MyControl.ascx覆盖它(.... \ Controls \ MyControl.ascx)?
非常感谢!
答案 0 :(得分:0)
所以我实际上最终搞清楚了,并希望分享:
<ItemGroup>
<_UpdatedControl Include="$(MSBuildThisFileDirectory)..\..\TempArea\MyControl.ascx" />
<FilesForPackagingFromProject Remove="Controls\MyControl.ascx" ></FilesForPackagingFromProject>
<FilesForPackagingFromProject Include="%(_UpdatedControl.Identity)" >
<DestinationRelativePath>Controls\%(RecursiveDir)%(Filename)%(Extension) </DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
所以你可以在这里看到它实际上删除了原始控件,然后将其添加回来。
我也改变了目标:
<PropertyGroup>
<OnAfterPipelineCollectFilesPhase>
CustomCollectFiles;
$(OnAfterPipelineCollectFilesPhase);
</OnAfterPipelineCollectFilesPhase>
</PropertyGroup>
如果有任何问题可以帮助我,请告诉我们!