Skip to main content

Visual Studio 命令行

今天需要在命令行下使用Visual Studio进行编译,搜了以下,发现msbuild可以,然后又搜了搜,发现devenv可以带参数在命令行下运行,我以前只知道它可以进到IDE里。

在链接的网站里找到了这个:


用法:
devenv [solutionfile | projectfile | anyfile.ext] [switches]

可以调用 devenv,用第一个参数指定解决方案文件或项目文件。也可以调用 devenv,使第一个参数作为要在编辑器中打开的任何其他类型的文件。如果提供项目文件,IDE 将通过在与项目文件相同的目录中查找与项目文件具有相同基名称的 .sln 文件,在解决方案的上下文中打开该项目文件。如果存在 .sln 文件,则IDE 将查找引用该项目的单个 .sln 文件。如果不存在这样的单个 .sln 文件,则 IDE 将创建一个具有默认 .sln 文件名的未保存的解决方案,而该默认文件名与项目文件具有相同的基名称。

命令行生成:
devenv solutionfile.sln /build solutionconfig [ /project projectnameorfile [ /projectconfig name ] ]

可用的命令行开关:

/build 生成指定的解决方案配置
/project 指定生成项目而不是解决方案
必须指定 /build 才能使用 /project
/projectconfig 指定要生成的项目配置
必须指定 /project 才能使用 /projectconfig
/out 将生成结果写入指定的文件
/rebuild 与 /build 类似,但先执行强制清理
/clean 清理生成结果
/deploy 生成指定的解决方案配置然后部署它
/run 运行指定的解决方案配置
/runexit 运行指定的解决方案配置然后终止
/command 启动后执行指定的内部命令行
/mditabs 使用选项卡式文档界面
/mdi 使用 MDI 界面
/fn 使用指定的字体名称
/fs 使用指定的字体大小
/LCID 使用指定的语言 ID
/noVSIP 禁用用于 VSIP 测试的VSIP 开发人员许可证密钥
/safemode 出于稳定性仅加载默认的环境和服务
/resetskippkgs 允许曾被标记为加载失败的 VsPackages再次加载
/migratesettings 迁移另一个版本中的某些用户设置

产品特定的开关:

/debugexe 打开要调试的指定可执行文件。命令行的其余部分作为它的参数传递到此执行文件。
/useenv 使用 PATH、INCLUDE、LIBPATH 和 LIB 环境变量而不是使用 VC++ 生成的 IDE 路径。

若要从命令行附加调试器,请使用:
vs7jit.exe -p

比较常用的就是 devenv filename.sln /build release 了

Comments

Popular posts from this blog

Determine Perspective Lines With Off-page Vanishing Point

In perspective drawing, a vanishing point represents a group of parallel lines, in other words, a direction. For any point on the paper, if we want a line towards the same direction (in the 3d space), we simply draw a line through it and the vanishing point. But sometimes the vanishing point is too far away, such that it is outside the paper/canvas. In this example, we have a point P and two perspective lines L1 and L2. The vanishing point VP is naturally the intersection of L1 and L2. The task is to draw a line through P and VP, without having VP on the paper. I am aware of a few traditional solutions: 1. Use extra pieces of paper such that we can extend L1 and L2 until we see VP. 2. Draw everything in a smaller scale, such that we can see both P and VP on the paper. Draw the line and scale everything back. 3. Draw a perspective grid using the Brewer Method. #1 and #2 might be quite practical. #3 may not guarantee a solution, unless we can measure distances/p...

Hardware Password Manager

[Updates 2025-01-20] The original blog post assumes that all passwords are stored in one password manager, and the password manager either unlocks everything or nothing (e.g. Keepass). After discussing with friends, I realized that if I use something like pass , and I use a hardware GPG token, I can actually store and sync all encrypted passwords to all devices, because I will only decrypt the passwords on demand, and the computer will not see the GPG private key. The compromise is that the computer will see the list of all password entries (e.g. accounts), as well as a few other issues . I've been using Keepass for many years. I don't use online password services because I cannot fully trust them. Besides, I may not always have Internet connection, which is why I also don't use a self-hosted service. Everything has been working fine, until I turn my paranoid knob to the max. Here's the thought experiment . The Imaginary Scenario Let's say I have 100 PCs for differe...

Installing Linux on Surface Pro 1g

Windows 10 will soon reach its end of life, and my 1-gen Surface Pro is not supported by Windows 11. I (finally) decided to install Linux to it. Fortunately, it's a not-so-easy nice adventure: The device has only one USB port, so I have to bring back my 10+-year old USB hub. My live USB drive cannot boot directly, I have to disable Secure Boot first, by holding Volume Up during boot. I think years ago I learned that booting on USB might not work through a USB hub, but fortunatelly it worked well with my setup. This is done by holding Volume Down during boot. Wifi adapter was detected in the live Linux environment, but not functional. And I don't have a USB-Ethernet adapter. Luckily, nowadays we have USB-tethering from Android phones, which works out-of-the-box. Originally I planned to following this guide to set up root on ZFS, however, the system froze when building the ZFS kernel module. Then I decided to just use EXT4, yet I still learned a lot from the guide about disk par...