2011-05-18 32 views
0

我開發了一個工具,用於構建其他解決方案文件,如果成功,則運行輸出。該工具最初是使用VS2008構建的,必須構建的解決方案文件也位於VS2008中。爲了在運行時構建解決方案文件,我添加了對Microsoft.Build.Engine和Microsoft.Build.Framework程序集的引用,並且迄今爲止都非常棒。我如何在VS2010 C#項目中使用VS2008的MSBuild程序集

最近我被迫將我的主要解決方案遷移到VS2010,但必須在運行時構建的衛星解決方案目前必須保存在VS2008中。爲了增加更多樂趣,VS2008解決方案僅包含C++項目(衆所周知,它們在VS2010中轉換爲vcxproj格式)。

我遇到的問題是我無法加載上述程序集的版本3.5。儘管我在運行時付出了所有努力,但總是加載4.0版本。這有不想要的影響,當我嘗試構建VS2008解決方案時,出現以下錯誤:The project file "bla bla bla.vcproj" is in the ".vcproj" file format, which MSBuild no longer supports. Please convert the project by opening it in the Visual Studio IDE or running the conversion tool, or use MSBuild 3.5 or earlier to build it.

引用MSBuild程序集的C#項目使用TargetFramework 3.5進行配置,並且對程序集的引用如下所示:

<Reference Include="Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
    <SpecificVersion>True</SpecificVersion> 
</Reference> 
<Reference Include="Microsoft.Build.Framework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
    <SpecificVersion>True</SpecificVersion> 
</Reference> 

我也試着將引擎DefaultToolsVersion設置爲3.5,但這也沒有幫助。

我試圖避免通過執行新進程並將參數發送到命令行來調用確切的MSBuild版本,因爲這會涉及更多工作來註冊記錄器和同步消息,以便我的主要應用程序可以知道構建是否成功,並在這種情況下運行輸出。我真的希望這不是唯一的出路。

任何想法,解決方案或任何形式的幫助真的很感激。 在此先感謝

回答

0

最後,我可以設法讓它工作。只是爲了記錄,如果碰巧任何人都遇到同樣的問題,這個問題是我的解決方案中的另一個項目(不是使用MSBuild的)仍然針對框架4,這導致我的運行時爲4.0而不是3.5

相關問題