如何设置Visual Studio自动发布PDF文件

15

有没有一种方法可以设置Visual Studio发布所有的PDF文件?

我知道你可以在项目中为每个单独的PDF文件设置“内容”属性的构建操作。

但这意味着对于我的当前项目,需要重复100次相同的操作。有没有一种更改全局设置以执行相同操作的方法?


发布PDF文件?把PDF文件放在项目外,通过虚拟文件夹映射到您的Web服务器上如何? - o.k.w
Web服务器并不是问题,问题在于获取用于项目的PDF文件、手册/文档/下载等内容,但您需要设置每个文件,以便在发布时将其传输到服务器。一旦传输完成,一切都很好。 - TheAlbear
使用多选功能怎么样?只需点击几下鼠标即可完成。或者,如果您的PDF文档分散在项目树中,可以在文本编辑器中打开项目文件并进行全局搜索和替换。 - Dirk Vollmar
仍然意味着需要点击每个文件,我希望有一个全局设置适用于所有项目,我可以设置一次然后忘记它。 - TheAlbear
我发现现在可以选择多个文件并同时更改所有文件的构建选项,这样可以节省一些时间。 - TheAlbear
7个回答

15

只需右键单击您要包含的文件,选择属性,在属性窗口中将“构建操作”更改为“内容”。这样在发布时就会包含该文件。


1
应该是实际答案。谢谢伙计。 - fulvio

14

有一个更简单的方法,您需要确保文件已被包含在项目中,然后右键单击该文件并转到属性,在那里会有一个选项“复制到输出目录”,选择“始终复制”

祝好运


8
您还需要将“生成操作(Build Action)”设置为“内容(Content)”,这就是最佳答案。 - paul
3
将构建操作更改为“内容”,就像Vinblad的回答所说的那样,“复制”总是将其复制到bin目录。 - adam0101
谢谢@paul.. Copy Always本身并不能解决问题。设置构建操作可以解决这个问题。 - cowsay

5

添加一个后构建事件,命令如下:

xcopy "$(ProjectDir)myPdfs\*.pdf" "$(TargetDir)myPdfs\" /S /Y

在上述命令中,myPdfs 只是您项目目录下包含所有 PDF 文件的子文件夹。如果您有多个这些子文件夹,则需要为每个子文件夹运行该命令。
希望这可以解决问题!

1
看起来这是最好的选择。 - TheAlbear

3
假设您希望在 c:\PDFs 外部部署 PDF 文件,修改 .csproj 文件。
<ItemGroup>
    <Content Include="c:\PDFs\**\*.pdf" />
</ItemGroup>

如果它们在项目根目录的"MyPdfs"文件夹中。
<ItemGroup>
    <Content Include="MyPdfs\**\*.pdf" />
</ItemGroup>

更多关于此的细节可以在以下链接中找到:https://dev59.com/8nRB5IYBdhLWcg3wj3yc#12202917


2

打开csproj文件并更改:

<None Include="my.pdf">

to:

<Content Include="my.pdf">

1

CopyToOutputDirectory会在发布时将文件复制到bin文件夹中。将“Build Action”设置为“Content”将无需设置CopyToOutputDirectory即可复制文件。但仍需对每个文件执行此操作。您可以在项目文件中进行正则表达式替换,从<None Include="XXX.pdf" />替换为<Content Include="XXX.pdf" />


1

您可以直接编辑项目文件,以添加所需的<CopyToOutputDirectory>Always</CopyToOutputDirectory>元素到PDF文件中。(如果您的项目不在源代码控制下,请先在副本上进行测试,并备份以防出现问题)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接