2

私の会社には、変換してVS2012と互換性を持たせる必要があるソリューションがたくさんあります(フレームワーク4.0を維持しています)。私はそれらを2012で直接開いてみました。コンバーターは.csprojファイルにいくつかの変更を加えました。

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

以下:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>


<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

これらの変更が正確に何を意味するのか誰か教えてもらえますか? 運が悪かったのでグーグルで検索してみました。

さらに、.csproj を以前のバージョンにロールバックしてそのままにしておくと、リスクはありますか?

よろしくお願いします!

4

1 に答える 1

3

各 Visual Studio プロジェクトは、基本的には大きなビルド スクリプトです (実際には msbuild を使用して、コマンド ラインからプロジェクト ファイルをビルドできます)。コンバーターが行っていることは、使用している Visual Studio の新しいバージョンの正しいビルド プロパティを取得することです。ローカル コンピューターに配置されているため、実際にプルしているファイルを確認することができます。

あなたが投稿した最初の変更はMicrosoft.Common.props、Visual Studio 2012 で必要な (共通ビルド プロパティ) の正しいバージョンを取得することです。このインポートは古いプロジェクトにもあり、バージョンが異なるだけです。

2 番目の変更は、Web アプリケーションをビルドするために必要なすべてのビルド「ターゲット」 (msbuild はスクリプト「ターゲット」の実行可能ブロックを呼び出します) をインポートすることです。

あなたが偏執狂的であるなら、古いプロジェクトのバックアップをとっておいてください。しかし、正直なところ、上記の変更に驚くべきことは何もありません。ビルド エンジンの正しいサポート ファイルを取り込むためだけにあるのです。

それが役立つことを願っています!私はプロジェクト ファイルと msbuild を何年も扱ってきました。必要に応じて、より詳細な説明を提供できます。

于 2013-11-14T13:38:15.457 に答える