如何将VSTO PowerPoint插件旧版.csproj转换为SDK风格?
转换VSTO PowerPoint插件旧版.csproj为SDK风格项目文件
一、通用转换步骤
- 先备份原.csproj文件,防止操作出错丢失配置
- 新建一个空白的SDK风格.csproj文件,套用以下基础模板:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- 匹配原项目的.NET Framework版本,VSTO建议用4.7.2及以上 --> <TargetFramework>net472</TargetFramework> <OutputType>Library</OutputType> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> <!-- 插件用到WinForms控件时必须添加 --> <UseWindowsForms>true</UseWindowsForms> <!-- 标识项目为PowerPoint VSTO插件类型 --> <VSTOProjectType>PowerPoint</VSTOProjectType> </PropertyGroup> <ItemGroup> <!-- 添加VSTO核心引用 --> <Reference Include="Microsoft.Office.Core" /> <Reference Include="Microsoft.Office.Interop.PowerPoint" /> <Reference Include="Microsoft.Vbe.Interop" /> <Reference Include="Microsoft.Office.Tools.PowerPoint.v4.0.Utilities" /> <Reference Include="Microsoft.Office.Tools.Common.v4.0.Utilities" /> </ItemGroup> <!-- 导入原项目的所有代码、资源文件 --> <ItemGroup> <Compile Include="**\*.cs" /> <EmbeddedResource Include="**\*.resx" /> <None Include="**\*.xml" /> <!-- 包含VSTO配置文件等非编译文件 --> </ItemGroup> </Project>
- 对照原.csproj补充缺失配置:
- 原项目里的自定义编译符号、编译选项,加到
<PropertyGroup>的<DefineConstants>中 - 原项目的第三方NuGet包,用
<PackageReference>替换旧的<Reference>(如果是通过NuGet安装的) - 原项目的特殊COM引用,保留版本绑定、路径提示等属性,比如通过
<HintPath>指定本地路径
- 原项目里的自定义编译符号、编译选项,加到
二、VSTO专属配置要点
- 确保
ThisAddIn.cs及对应的设计器文件在项目中,SDK风格项目会自动识别这些VSTO核心文件的编译逻辑 - 重新配置调试启动:右键项目→属性→调试→设置启动外部程序为本地PowerPoint的路径(示例:
C:\Program Files\Microsoft Office\root\Office16\POWERPNT.EXE) - 若原项目有部署配置,需把相关设置迁移到新项目的发布选项中,或用MSBuild脚本补充
三、常见问题修复
- 遇到引用缺失时,检查原项目的引用路径,在新文件里用
<HintPath>指定,示例:
<Reference Include="Microsoft.Office.Tools.PowerPoint.v4.0.Utilities"> <HintPath>$(ProgramFiles)\Microsoft Visual Studio\2022\Enterprise\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Tools.PowerPoint.v4.0.Utilities.dll</HintPath> </Reference>
- 编译时提示找不到VSTO类型,确认已安装Visual Studio的「Office/SharePoint开发」工作负载
内容的提问来源于stack exchange,提问作者Geek
相关产品推荐
相关产品推荐

