とりわけ、C++ プロジェクトをソリューションに追加するアドインを作成しました。
c# または vb.net プロジェクトを含むソリューションに C++ プロジェクトを追加する際に問題があります (これらのソリューションをドット ネット ソリューションと呼びます)。
envdte 自動化なしで、すべてこれを行ったと確信しています。
c++ プロジェクト (サポートされているプラットフォーム Win32 および x64 を使用) を dot net ソリューションに追加します。構成マネージャーを見てください->ドットネットソリューションにはx86とx64しかないため、x64構成は正しいですが、x86構成では、c++プロジェクトのWin32ではなく、代わりにx64が表示されます!!!!! そうそう、VSはこれが機能しないことを知っているほど賢く、ビルドするためにこの構成を選択しません!!!!
これを手作業で行っている場合は、開発者として十分に賢くチェックする必要があります。しかし、このプロジェクトを追加する自動化を構築しようとしています。つまり、ユーザーはこのバグに気付いていない可能性があり、ソリューションを構築しますが、失敗します。
プラットフォームを変更しようとしましたが、読み取り専用です。
これは私がこれまでに見つけた唯一のものです:
SolutionConfiguration config = solution.SolutionBuild.SolutionConfigurations.Item("Debug");
string msg = "";
foreach (SolutionContext context in config.SolutionContexts)
{
msg += context.ProjectName + context.ConfigurationName + context.PlatformName + context.ShouldBuild;
context.ConfigurationName = "Debug"; // I can modify this but I don't want to
if(context.PlatformName == "x64" && !context.ShouldBuild) // this must be the wrong platform
{
// I'd like to do that but it won't even compile
context.PlatformName == "Win32"; // <--- intellisense says error
context.ShouldBuild = true; // compiles but checkbox doesn't get set
}
}
構成行全体を削除して新しい行を追加しようと考えましたが、その方法が見つかりません...
「 」が見つかりましConfigurationManager.DeleteConfigurationRow Method
たが、「デバッグ」または「リリース」構成のみが削除されます... http://msdn.microsoft.com/en-us/library/ash2539k(v=vs.100).aspx
(それは私が望んでいることではないと思います - 特定のプラットフォームに関連する特定の構成のみを削除する必要があります - または、すべてのプラットフォームが x64 として追加されたため、「ShouldBuild = False」またはプロジェクトとしてマークされたもの) x86 ソリューション構成に対応する構成. すべての構成を削除すると... それは機能しないはずであり、それでも... 次に何をすればよいですか?)
" ConfigurationManager.AddConfigurationRow Method
" - プラットフォームを指定するものは何もありません... - 行を削除すると仮定すると、どうすればそれを正しく追加し直すことができますか?