gpt4 book ai didi

c# - 通过 Visual Studio Automation 设置项目的 OutputPath 属性

转载 作者:太空狗 更新时间:2023-10-29 18:07:23 24 4
gpt4 key购买 nike

我正在编写一个 VSIX 程序包,以允许用户批量编辑当前加载的解决方案中项目的所有事件配置的 OutputPath 属性(请参阅令人难以置信的恼人步骤 #4 here)。

我遇到了一个非常具体的问题:当将属性设置为包含宏的值时(例如 "$(SolutionDir)\bin\Debug" 写入 .csproj 的值被转义如下:

<OutputPath>%24%28SolutionDir%29\bin\Debug\</OutputPath>

它不是让 MSBuild 展开宏,而是创建一个名为 $(SolutionDir) 的实际物理文件夹。我想以某种方式绕过这种转义。

毫无疑问,该领域缺乏 MSDN 文档。

我的初始代码如下:

private void MenuItemCallback(object sender, EventArgs e)
{
SolutionWideOutputDialogWindow dialog = new SolutionWideOutputDialogWindow();
dialog.ShowModal();
if (!dialog.DialogResult.HasValue || !dialog.DialogResult.Value)
{
return;
}

string requestedOutputPath = dialog.outputPathTextBox.Text;
Solution2 solution = _dte2.Solution as Solution2;
if (solution == null)
{
return;
}

Projects projects = solution.Projects;
foreach (Project project in projects)
{
Property outputPath = project.ConfigurationManager.ActiveConfiguration.Properties.Item("OutputPath");
outputPath.Value = requestedOutputPath;
project.Save();
}
}

非常感谢任何人的帮助。

最佳答案

当从项目属性进行编辑时,Visual Studio 会遗憾地转义特殊字符。

要解决此问题,请直接在文本编辑器中编辑您的 .csproj 文件。

例如,改变:

<OutputPath>%24%28SolutionDir%29\bin\Debug\</OutputPath>

到:

<OutputPath>$(SolutionDir)\bin\Debug\</OutputPath>

关于c# - 通过 Visual Studio Automation 设置项目的 OutputPath 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com