MSBuild复制任务找不到定义的属性的值 [英] MSBuild copy task does not find value of property defined
问题描述
您好,我遇到的问题是我的目标"CopyBuildFiles"无法复制,因为我认为它无法找到生成文件夹.构建文件夹在属性$(BuildFolder)中定义,该文件夹名称是基于date.time创建的,并且是在"CopyBuildFiles"之前运行的先前目标之一中创建的.
如果我对@(SrcFiles)的路径进行硬编码,而不是从$(BuildFolder)派生,则可以使用.
有什么想法,这里发生了什么,如何解决?
非常感谢.
<? xml 版本 =" 编码 =" utf-8" >
< 项目 =" http://schemas.microsoft.com/developer/msbuild/2003" < 属性组 >
< 年份 > $([ System.DateTime] :: Now.ToString("yy"))< /year >
< 月 > $([ System.DateTime] :: Now.ToString("MM"))< /month >
< 天 > $([ System.DateTime] :: Now.ToString("dd"))< /day >
< 时间 > $([ System.DateTime] :: Now.ToString("HHmm"))< /time >
< AssemblyFileVersionAttribute > [$( year).$(month).$(day).$(time))] < /AssemblyFileVersionAttribute >
< BuildFolder > c:\ website.builds \ $(AssemblyFileVersionAttribute)\ < /BuildFolder >
< IISFolder > c:\ website.publish \ < /IISFolder > 跨度>
< LogDirectory > C:\ website.builds.logs < /LogDirectory >
< LogFile > C:\ website.builds.logs \ Buildlog _ $(AssemblyFileVersionAttribute).txt < /LogFile < /PropertyGroup >
< 目标 =" PreBuild" < MakeDir =" $(LogDirectory)" / < RemoveDir =" $(IISFolder)" < >
< MakeDir =" $(BuildFolder)" / < MakeDir =" $(IISFolder)" / < /Target >
< 目标 =" 编译" < MSBuild =" $(MSBuildStartupDirectory)\ websitev2.sln" 属性 OutDir = $(BuildFolder)\" / < /Target >
< ItemGroup >
< SrcFiles =" $(BuildFolder)_PublishedWebsites \ ** \ *.*" / >
< /ItemGroup >
< 目标 =" CopyBuildFiles"
输入 ="
输出 =
" < 复制 =" @(SrcFiles)"
目标文件 ="
>
< /Target >
< 目标 =" Deploy" < CallTarget =" PreBuild" / < CallTarget =" 编译" / < CallTarget =" CopyBuildFiles" / < /Target >
< /Project >
(BuildFolder),此文件夹名称是基于date.time创建的,并且是在"CopyBuildFiles"之前运行的先前目标之一中创建的.
如果我对@(SrcFiles)的路径进行硬编码,而不是从
(BuildFolder)派生,则可以使用.
有什么想法,这里发生了什么,如何解决?
非常感谢.
<? xml 版本 =" 编码 =" utf-8" > < 项目 =" http://schemas.microsoft.com/developer/msbuild/2003" < 属性组 > < 年 >
([System.DateTime] :: Now.ToString("yy"))< /年 > < 月 >
Hi, The problem I face is my target ''CopyBuildFiles'' does not copy as I think it is unable to find the build folder. The build folder is defined in the property $(BuildFolder), this folder name is created based on date.time and is created in one of the previous targets that runs before ''CopyBuildFiles''.
If I hardcode a path for @(SrcFiles) instead of deriving this from $(BuildFolder) it works.
Any thoughts, what is happening here and how can this be resolved?
Many thanks.
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<year>$([System.DateTime]::Now.ToString("yy"))</year>
<month>$([System.DateTime]::Now.ToString("MM"))</month>
<day>$([System.DateTime]::Now.ToString("dd"))</day>
<time>$([System.DateTime]::Now.ToString("HHmm"))</time>
<AssemblyFileVersionAttribute>[$(year).$(month).$(day).$(time))] </AssemblyFileVersionAttribute>
<BuildFolder>c:\website.builds\$(AssemblyFileVersionAttribute)\</BuildFolder>
<IISFolder>c:\website.publish\</IISFolder>
<LogDirectory>C:\website.builds.logs</LogDirectory>
<LogFile>C:\website.builds.logs\Buildlog_$(AssemblyFileVersionAttribute).txt</LogFile>
</PropertyGroup>
<Target Name="PreBuild">
<MakeDir Directories="$(LogDirectory)" />
<RemoveDir Directories="$(IISFolder)"></RemoveDir>
<MakeDir Directories="$(BuildFolder)" />
<MakeDir Directories="$(IISFolder)" />
</Target>
<Target Name="Compile">
<MSBuild Projects="$(MSBuildStartupDirectory)\websitev2.sln" Properties="OutDir=$(BuildFolder)\" />
</Target>
<ItemGroup>
<SrcFiles Include="$(BuildFolder)_PublishedWebsites\**\*.*"/>
</ItemGroup>
<Target Name="CopyBuildFiles"
Inputs="@(SrcFiles)"
Outputs=
"@(SrcFiles->'$(IISFolder)%(RecursiveDir)%(Filename)%(Extension)')">
<Copy SourceFiles="@(SrcFiles)"
DestinationFiles="@(SrcFiles->'$(IISFolder)%(RecursiveDir)%(Filename)%(Extension)')"
/>
</Target>
<Target Name="Deploy">
<CallTarget Targets="PreBuild" />
<CallTarget Targets="Compile" />
<CallTarget Targets="CopyBuildFiles" />
</Target>
</Project>
(BuildFolder), this folder name is created based on date.time and is created in one of the previous targets that runs before ''CopyBuildFiles''.
If I hardcode a path for @(SrcFiles) instead of deriving this from
(BuildFolder) it works.
Any thoughts, what is happening here and how can this be resolved?
Many thanks.
<?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <year>
([System.DateTime]::Now.ToString("yy"))</year> <month>
这篇关于MSBuild复制任务找不到定义的属性的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!