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

我正在为Excel构建一个C#添加。 为了调试它,我需要使用包含addin的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-命令行-argum

实际上,宏不能在Start Options |中使用 命令行参数

我看到两个解决方案:

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

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

我想你可以利用post-build事件来读取你的文件。 @HansPassant在VS2010中解释了它- 启动选项命令行参数中的项目宏变量 。

简短的报价:

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

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

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