如何使MSBuild正确跟踪引用项目中使用外部工具生成的文件?

时间:2017-06-26 01:41:31

标签: .net visual-studio visual-studio-2010 msbuild visual-studio-mac

我有MSBuild代码,它接受具有特定构建操作的文件(在此示例中为CompileFoo)并生成输出文件(具有不同的扩展名)。这是我到目前为止的代码:

<Target Name="BuildFoo" BeforeTargets="Compile"
    Inputs="@(CompileFoo)"
    Outputs="@(CompileFoo -> '$(OutputPath)%(RelativeDir)%(Filename).bin' )" >

    <!-- makefoo doesn't know how to create directories: -->
    <MakeDir Directories="$(OutputPath)%(CompileFoo.RelativeDir)"/>
    <Exec Command="makefoo -o &quot;$(OutputPath)%(CompileFoo.RelativeDir)%(CompileFoo.Filename).bin&quot; &quot;%(CompileFoo.Identity)&quot;" />

    <ItemGroup>
        <!-- Required so we can handle Clean: -->
        <FileWrites Include="@(CompileFoo -> '$(OutputPath)%(RelativeDir)%(Filename).bin' )"/>
    </ItemGroup>
</Target>

如果我将它包含在生成最终EXE的项目中,这将非常有用。

但是现在我想让它在一个项目中工作,该项目生成一个由EXE引用的DLL(带有程序集引用的C#),我需要获取这些生成的项(示例中的.bin个文件)从DLL的输出目录,进入EXE的输出目录。

我试图在DLL项目中发生类似于它的效果:

<Content Include="Test\Test.txt"><CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory></Content>

在这种情况下,Test\Test.txt文件最终出现在EXE的输出文件夹中。虽然我不确定那是一回事。 (它是从原始文件复制还是从DLL输出文件夹复制?)

我正在尝试获得相当兼容的东西 - 特别是可以在VS2010和VS Mac上使用。

1 个答案:

答案 0 :(得分:1)

这里的诀窍是让temp<-split(df, df[,c("SiteName","Session","Year")])目标返回一个额外的Year Session SiteName Temp order 2014 July Matoa 23 1 2014 July Matoa 12 1 2014 July Kaoshe 15 2 2014 July Kaoshe 27 2 2014 July Sedina 30 3 2014 July Sedina 21 3 2014 July Livingi 21 4 2014 July Livingi 21 4 项:

GetCopyToOutputDirectoryItems

(testet使用当前的MSBuild 15版本)(使用VS2010 -AR测试的编辑版本)