繁体   English   中英

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

[英]VS2013 - How to pass the solution folder, $(SolutionDir), in the command line arguments for a C# project using an external program

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

例如:

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

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

编辑:请支持我并通过投票支持以下想法将其添加到 VS 中: http : //visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6350738-support-for-macros-in-debugging-命令行参数

事实上,宏不能在开始选项 | 中使用。 命令行参数

我看到两种解决方案:

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

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

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

我想您可以利用构建后事件来读取您的文件。 @HansPassant 在VS2010 - Project Macro Variables in Start Options Command Line Arguments 中进行了解释

一个简短的报价:

一种可能的解决方法是使用构建后事件写入您在程序中读取的文件。 像 echo $(ProjectName) > "$(TargetDir)cmdargs.txt

您可以将cmdargs.txt替换为所需的适当文件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM