VS2013 - 如何使用外部程序在C#项目的命令行参数中传递解决方案文件夹$(SolutionDir)

时间:2014-08-25 18:49:20

标签: c# visual-studio-2013

我正在为Excel构建一个C#添加。为了调试它,我需要使用包含插件的Debug或Release路径的命令行参数启动Excel.exe。

例如:

  • 启动外部程序:C:\ Program Files \ Microsoft Office \ Office15 \ EXCEL.EXE
  • 命令行参数“C:\ Dev \ Project1 \ Project1 \ bin \ Debug \ Project1-AddIn64.xll”

但是,我想将“C:\ Dev \ Project1 \ Project1 \ bin \ Debug”替换为VS中C ++项目的等效$(SolutionDir)。有没有办法做到这一点 ?如果不可行,有办法解决这个问题吗?

编辑:请支持我,并通过投票表达以下想法在VS中添加:http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6350738-support-for-macros-in-debugging-command-line-argum

4 个答案:

答案 0 :(得分:5)

实际上,宏不能在“开始选项”中使用命令行参数

我看到两个解决方案:

  1. 当您启动应用程序时,当前文件夹设置为$(TargetDir),您可以参考解决方案文件夹,如下所示:..\..\..\如果是外部程序接受相对路径。 (我不太清楚为什么你会想要引用解决方案文件夹,引用输出/目标文件夹对我来说更有意义)

  2. 在Post Build事件中(取消注册)并在部署组件时注册组件的方式(正确设置)。这样,您只需在“开始操作”中引用Excel。这也立即增加了测试更类似于生产的方案的好处。

答案 1 :(得分:1)

我猜你可以利用post-build事件来读取你的文件。 @HansPassant在VS2010 - Project Macro Variables in Start Options Command Line Arguments中解释了它。

简短的引用:

  

可能的解决方法是生成后事件,该事件会写入您在程序中读取的文件。像echo $(ProjectName)> " $(TARGETDIR)cmdargs.txt

您可以将cmdargs.txt替换为您想要的相应文件。

答案 2 :(得分:0)

这不完全是一个修复,但这可能会帮助一些人。如果您从项目模板“Visual C#/ .NET Core / Console App”而不是“Visual C#/ Windows / Console App”创建项目,则支持此功能。当我在“项目属性”窗口的“调试”选项卡上的“应用程序参数”字段中放入“$(SolutionDir)”时,它将在运行时展开。请注意,您将需要Visual Studio 2015 Update 3或更高版本。

答案 3 :(得分:0)

可以使用命令字段中的宏。我使用 procmon.exe 来查看 VS 正在寻找什么,实际上我可以使用 $(SolutionDir)\..\Debug\thetoolname.exe 因为我的解决方案不在根目录中。 我使用的是 VS2019,因此 AFAIK 支持此版本,但很可能在较低版本中受支持。只需使用 procmon 来检查 VS 尝试解析的路径。