Visual Studio中.NET项目模板能否自动添加现有项目引用?
Visual Studio项目模板自动添加跨项目引用的可行性问题
我搭建了一套供用户创建.NET插件类库的系统,包含两类模板:
- 解决方案模板:可创建插件项目、测试台控制台应用,且自动添加测试台到插件的项目引用
- 项目模板:用于向现有解决方案添加额外插件项目
使用解决方案模板后,生成的目录结构如下:
AllMyPlugins/ |-- AllMyPlugins.sln |-- Testbed/ | |-- Program.cs | |-- Testbed.csproj <-- 已引用MyXxxPlugins | |-- MyXxxPlugins/ |-- Module1.cs |-- MyXxxPlugins.csproj
若使用项目模板添加另一个插件,目录结构变为:
AllMyPlugins/ |-- AllMyPlugins.sln |-- Testbed/ | |-- Program.cs | |-- Testbed.csproj <-- 仍引用MyXxxPlugins,但未引用MyYyyPlugins |-- MyXxxPlugins/ | |-- Module1.cs | |-- MyXxxPlugins.csproj | |-- MyYyyPlugins/ |-- Module1.cs |-- MyYyyPlugins.csproj
核心问题
在Visual Studio中使用项目模板(非dotnet new),能否自动为解决方案中的现有项目添加项目引用?具体来说,模板能否修改已有的Testbed项目,使其自动引用新创建的插件项目?
测试环境:
- VS 2022 (17.14.20)
- VS 2026 (18.0.0)
模板配置(简化版)
以下是简化后的template.json:
{ "$schema": "http://json.schemastore.org/template", "identity": "Abc.Prj.cs", "name": "ABC Project", "shortName": "abc-prj-cs", "tags": { "language": "C#", "type": "project" }, "sourceName": "NewAbcProject", "primaryOutputs": [ { "path": "NewAbcProject.csproj" } ], "postActions": [ { "actionId": "B17581D1-C5C9-4489-8F0A-004BE667B814", "continueOnError": true, "args": { "referenceType": "project", "reference": "../NewAbcProject/NewAbcProject.csproj", "targetFiles": "../Testbed/Testbed.csproj" } }, { "actionId": "3A7C4B45-1F5D-4A30-959A-51B88E82B5D2", "continueOnError": true, "args": { "executable": "dotnet", "args": "add ../Testbed/Testbed.csproj reference NewAbcProject/NewAbcProject.csproj" } }, { "actionId": "3A7C4B45-1F5D-4A30-959A-51B88E82B5D2", "args": { "executable": "AddReference.cmd", "workingDirectory": "." } } ] }
已尝试的解决方案
1. AddProjectReference后置操作
- 未修改Testbed项目
- Visual Studio无报错
2. 调用dotnet add的脚本后置操作
- 在Visual Studio中未执行
- Visual Studio无报错
- 手动执行命令有效
3. 调用.cmd文件的脚本后置操作
- 在Visual Studio中未执行
- Visual Studio无报错
- 手动执行.cmd文件有效
注意:因不确定相对路径基准,已尝试多种路径组合,均未成功。
可行性疑问
在Visual Studio项目模板中,是否有官方支持的方法可以自动为同一解决方案中的现有项目添加项目引用?还是Visual Studio本身根本不支持此功能?
内容的提问来源于stack exchange,提问作者stritch000




