尝试这样的事情(我在 LinqPad 中运行这样的代码,但如果你愿意,你可以创建一个控制台应用程序):
const string xmlns = "http://schemas.microsoft.com/developer/msbuild/2003";
void Main()
{
var dir = @"C:\proj\catalyst\source";
var xmlns = "http://schemas.microsoft.com/developer/msbuild/2003";
foreach( var configFile in Directory.EnumerateFiles(dir,"*.csproj",SearchOption.AllDirectories))
{
var doc = XDocument.Load(configFile);
var paths = doc.Descendants(XName.Get("OutputPath",xmlns));
foreach(var path in paths)
{
path.Value = "\"$(SolutionDir)$(ConfigurationName)\$(PlatformName)\"";
}
doc.Save(configFile);
}
}
这将使您的输出目录相对于解决方案文件(尽管您可以根据需要将 $(SolutionDir) 替换为绝对路径。)