在Visual Studio 2017中发布ASP.NET Core 2.0项目时包含指定依赖文件
搞定这个文件复制的问题很简单,在Visual Studio 2017社区版的ASP.NET Core 2.0项目里,有两种实用的方法能确保DinkToPdf依赖的libwkhtmltox.dll和libwkhtmltox.so随发布一起复制,我给你一步步讲:
方法一:直接编辑项目文件(.csproj)
这种方式精准可控,适合熟悉项目配置的同学:
- 右键你的ASP.NET Core项目,选择「编辑.csproj」(或者直接在解决方案资源管理器里找到项目文件双击打开)
- 在
<Project>节点内添加以下XML配置:
<ItemGroup> <!-- 配置Windows平台依赖的dll文件 --> <None Include="bin\libwkhtmltox.dll"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </None> <!-- 配置Linux平台依赖的so文件 --> <None Include="bin\libwkhtmltox.so"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </None> </ItemGroup>
- 保存文件即可。
PreserveNewest的作用是只复制比发布目录里现有文件更新的版本,避免不必要的重复复制。如果你的文件不在项目根目录的bin下,记得调整Include里的路径哦。
方法二:通过Visual Studio界面设置文件属性
不想碰XML?用可视化操作也能搞定:
- 先在解决方案资源管理器里找到这两个文件:如果没显示,点击工具栏的「显示所有文件」按钮,找到文件后右键选择「包括在项目中」
- 选中其中一个文件,在右侧的「属性」窗口里做如下设置:
- 「复制到输出目录」:选择「始终复制」或者「较新时复制」(推荐后者,更高效)
- 「生成操作」:设置为「内容」(这样VS会把它视为项目内容,随发布流程输出)
- 对另一个文件重复同样的属性设置
额外提醒
- 如果你需要跨平台发布(同时支持Windows和Linux),确保两个文件都存在于项目对应的目录中,上面的方法会把它们都带到发布目录,各自平台运行时会自动识别对应的依赖文件
- 发布完成后可以检查一下发布目录,确认这两个文件是否已经被复制过去,一般会和项目中的目录结构对应
内容的提问来源于stack exchange,提问作者Zulander
相关产品推荐
相关产品推荐

