2010-09-22 36 views
0

在項目文件(S)我有以下如何從調用它的構建腳本覆蓋項目目標導入?

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />

對此我不能夠改變。

到目前爲止,我嘗試在 <Properties>CustomAfterMicrosoftCommonTargets=D:\Projects\OverrideCopyWebApplication.targets</Properties>

不工作。

這裏的風俗.targets文件我使用:

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<ItemDefinitionGroup> 
<ProjectReference Condition="'$(OverrideCopyLocalProject)'=='true'"> 
    <Private>False</Private> 
</ProjectReference> 
<Reference Condition="'$(OverrideCopyLocal)'=='true'"> 
    <Private>False</Private> 
</Reference> 
</ItemDefinitionGroup> 
<Target Name="_CopyWebApplication" Condition="'$(OutDir)' != '$(OutputPath)'" > 
<!-- Log tasks --> 
<Message Text="Overridden Copying Web Application Project Files for $(MSBuildProjectName)" /> 

<!-- Create the _PublishedWebsites\app\bin folder --> 
<MakeDir Directories="$(WebProjectOutputDir)\bin" /> 

<!-- Copy build outputs to _PublishedWebsites\app\bin folder --> 
<Copy SourceFiles="@(IntermediateAssembly)" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="true" /> 
<Copy SourceFiles="@(AddModules)" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="true" /> 
<Copy SourceFiles="$(IntermediateOutputPath)$(_SGenDllName)" DestinationFolder="$(WebProjectOutputDir)\%(Content.SubFolder)%(Content.RecursiveDir)" SkipUnchangedFiles="true" Condition="'$(_SGenDllCreated)'=='true'" /> 
<Copy SourceFiles="$(IntermediateOutputPath)$(TargetName).pdb" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="true" Condition="'$(_DebugSymbolsProduced)'=='true'" /> 
<Copy SourceFiles="@(DocFileItem)" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="true" Condition="'$(_DocumentationFileProduced)'=='true'" /> 
<Copy SourceFiles="@(IntermediateSatelliteAssembliesWithTargetPath)" DestinationFiles="@(IntermediateSatelliteAssembliesWithTargetPath->'$(WebProjectOutputDir)\bin\%(Culture)\$(TargetName).resources.dll')" SkipUnchangedFiles="true" /> 
<Copy SourceFiles="@(ReferenceComWrappersToCopyLocal); @(ResolvedIsolatedComModules); @(_DeploymentLooseManifestFile); @(NativeReferenceFile)" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="true" /> 

<!-- copy any referenced assemblies to _PublishedWebsites\app\bin folder --> 
<Copy SourceFiles="@(ReferenceCopyLocalPaths)" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="true" /> 
<Message Text="Content=$(Content)" /> 
<!-- Copy content files recursively to _PublishedWebsites\app\ folder --> 
<Copy SourceFiles="@(Content)" DestinationFolder="$(WebProjectOutputDir)\%(Content.RelativeDir)" /> 

<!-- Copy items that have been marked to be copied to the bin folder --> 
<Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectory)" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="true" /> 
<Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectoryAlways)" DestinationFolder="$(WebProjectOutputDir)\bin" SkipUnchangedFiles="false" /> 
</Target> 
</Project> 

我直接從文件,我試圖建立的項目是複製現有的目標指向,只是添加/更改一些消息看它是否工作。這不是調用自定義覆蓋。

如何在構建腳本中的項目文件中覆蓋此導入?項目文件沒有改變是可能的。我將MsBuild 4.0設置爲工具版本3.5,但我希望它能夠與MsBuild3.5一起工作。

+0

我不明白:你在哪裏嘗試把屬性代碼,你引用?你如何開始構建?你對原始項目文件做了什麼? – 2010-09-22 13:04:34

+0

屬性元素位於調用項目文件的構建腳本的msbuild任務中。我通過cc.net開始構建。它調用我的自定義構建腳本來獲取所有項目文件,並使用此屬性元素調用一個msbuildtask。 – Maslow 2010-09-22 13:11:50

回答

0

好吧我明白你想要做的更好。不幸的是,我不知道你是否可以重寫這些目標。您是否嘗試修改_CopyWebApplication來檢查目標在構建結束時是否被良好調用?

然而,這個線程可以幫助你:Can you prevent MSBuild.exe from running Build Events?