首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将AfterBuild目标移动到.targets文件

将AfterBuild目标移动到.targets文件
EN

Stack Overflow用户
提问于 2012-04-20 11:34:29
回答 2查看 1.7K关注 0票数 4

我有一个AfterBuild目标,我想将其用于一个解决方案中的多个项目。有没有一种方法可以将目标放到.targets文件中,并在每个项目中引用该文件。

下面是我尝试的方法,但似乎不起作用。

项目文件:

代码语言:javascript
复制
<Import Project="..\debug.targets"/>

.Targets文件:

代码语言:javascript
复制
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AfterBuild">
    <PropertyGroup>
        <WebsiteDirectory>C:\Inetpub\wwwroot</WebsiteDirectory>
    </PropertyGroup>

    <ItemGroup>
        <output Include=".\**\*.dll" Exclude=".\**\obj\**" />
        <output Include=".\**\*.pdb" Exclude=".\**\obj\**" />
        <output Include=".\**\*.svc" />
        <output Include=".\**\*.xap" />
        <output Include=".\**\*.aspx" />
        <output Include=".\**\*.js" />
        <output Include=".\**\*.config" />
    </ItemGroup>

    <PropertyGroup>
        <VirtualDirectoryPath>$(WebsiteDirectory)\$(RootNamespace)</VirtualDirectoryPath>
    </PropertyGroup>

    <copy SourceFiles="@(output)" DestinationFiles="@(output->'$(VirtualDirectoryPath)\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-27 21:08:35

使用这个

代码语言:javascript
复制
<Import Project="$(MSBuildThisFileDirectory)\debug.targets"/> 

$(MSBuildThisFile) =当前项目文件。

$(MSBuildThisFileDirectory) =包含当前项目文件的目录。

项目文件中的相对路径很难使用,具体取决于调用项目文件的内容。直接使用msbuild,相对路径将解析为项目文件。使用VS,相对路径将使用解决方案文件作为基本路径。

使用$(MSBuildThisFileDirectory)将强制相对路径使用预先确定的起始路径。您所需要做的就是填充相对路径的其余部分。

票数 4
EN

Stack Overflow用户

发布于 2012-04-20 11:44:35

您所做的基本上是正确的,但请确保您的Import语句是项目文件中的最后一个Import。

要验证是否正确调用了目标,请在diag模式下从命令行运行msbuild,并记下有关目标的输出。

msbuild myproj.proj /v:diag

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10239873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档