我有两个问题:visual studio 2008 和构建后事件。
1) 我如何动态列出要由构建后事件调用的 msbuild.exe 完整路径?目前,我有以下(效果很好,顺便说一句): -
C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe
"$(ProjectDir)MSBuild\MSBuildSettings.xml"
.. 但这只有在您有 x64 位环境时才有效。有没有办法使用一些内置的魔法设置?例如。$(MsBuildPath)msbuild.exe "blah....xml"
??
2) 我的 msbuild 任务做了一些事情,然后生成一个 txt 文件作为输出。我在 msbuild xml 文件中定义了输出路径。
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<UsingTask TaskName="CustomTask" AssemblyFile="MyAssembly.dll"/>
<Target>
<CustomTask
...
OutputFile="Foo.txt"
/>
<Target>
</Project>
我如何将真正的输出文件夹传递给 msbuild 文件?我试过...
OutputFile="$(OutDir)Foo.txt"
但那失败了:(
干杯!
更新 #1 - 回答第二个问题..
我已经找到了回答第二个问题的方法——虽然不确定它是否是最好的..所以我对其他想法持开放态度:)
XML 文件更改 :: 添加一个属性组,如果没有将外部参数传递给 msbuild.exe 可执行文件,则该属性组设置内部变量名称。
<PropertyGroup>
<OutputFile Condition=" '$(OutputFile)'=='' ">
..\SomeFolder\Foo.txt</OutputFile>
</PropertyGroup>
<Target>
<CustomTask
...
OutputFile="$(OutputFile)"
/>
<Target>
</Project>
现在,调用 msbuild 可执行文件,如 ...
msbuild.exe "C:\Temp Foo\Blah\MsbuildSettings" /p:OutputFile="C:\Folder 1\Folder 2\blah\"
并且有效:)