2013-09-16 55 views
1

我有内部的两个默认项目的解决方案(VisualBasic中控制台应用程序)溶液内的目标:建筑使用的MSBuild

Solution1\ 
      Solution1.sln 
      ConsoleApplication1\ConsoleApplication1.vbproj 
      ConsoleApplication2\ConsoleApplication2.vbproj 

我添加了一个自定义的目标ConsoleApplication1:

... 
    <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" /> 

    <Target Name="HelloWorld"> 
    <Message Text="Hello Build!"></Message> 
    </Target> 
    <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
    ... 
</Project> 

我想要设置一个脚本来执行两个项目的正常构建,然后调用我的自定义目标。

据:http://msdn.microsoft.com/en-us/library/ms171486.aspx,我应该能够调用使用以下命令的特定目标(现在忽略了项目的初步建立):

msbuild C:\Path\To\Solution1\Solution1.sln /t:ConsoleApplication1:HelloWorld 

相反,我收到以下错误信息:

错误MSB4057:目标“ConsoleApplication1:HelloWorld”在项目中不存在。 [E:\ Path \ To \ Solution1 \ Solution1.sln]

我认为我的语法不正确,正确的语法是什么来实现这个目标?

以下命令按预期工作:

msbuild C:\Path\To\Solution1\Solution1.sln 
msbuild C:\Path\To\Solution1\ConsoleApplication1\ConsoleApplication1.vbproj /t:HelloWorld 

回答

0

你有没有考虑只是添加自定义目标行为的AfterBuild目标所需的MSBuild PROJ文件?这是一种不同的方法,但不需要明确调用自定义目标,仍然是项目文件特定的。

+0

这绝对是一个有效的解决方法,如果我无法找到发布的代码片段无法正常工作的适时原因,我会采用(或将.sln.metaproj重写为.proj)。 – user1112560