如何在VS2010中使用发布工具时包含被忽略的文件?

时间:2010-08-11 04:59:57

标签: visual-studio publish

我的asp.net mvc项目中有一个目录/media/fonts,其中包含我网站的字体。当我在Visual Studio中使用“发布”工具时,即使它包含在我的项目中,也会忽略此文件夹。其他文件夹/media/images/media/css包含在内。

有没有办法告诉Visual Studio在发布时不要忽略这个文件夹?

3 个答案:

答案 0 :(得分:43)

从属性窗口中选择您的字体文件并将构建操作更改为内容。

答案 1 :(得分:27)

您可以通过修改字体文件扩展名的默认构建操作(.eot,.ttf等)来永久修复此问题

http://blog.andreloker.de/post/2010/07/02/Visual-Studio-default-build-action-for-non-default-file-types.aspx

此链接已被残酷的时间暗杀,所以这里是其内容的复制/粘贴:

可以在注册表中配置文件类型的默认构建操作。但是,我们不是手动破解注册表,而是使用更好的方法:pkgdef文件(关于pkgdef文件的好文章)。实质上,pkdef是类似于.reg文件的配置文件,它们定义注册表项和值,这些注册表项和值会自动合并到真实注册表中的正确位置。如果删除了pkg文件,则会自动撤消更改。因此,您可以安全地修改注册表而不会有任何破坏的危险 - 或者至少,它很容易撤消损坏。

最后,这是一个如何更改文件类型的默认构建操作的示例:

[$RootKey$\Projects{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\FileExtensions.spark]
"DefaultBuildAction"="Content"

密钥中的Guid指的是项目类型。在这种情况下,{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}表示“C#项目”。可以找到一个相当全面的项目类型guid列表here。虽然它没有明确涵盖Visual Studio 2010,但Guids也适用于当前版本。顺便说一句,我们可以在这里使用C#作为项目类型,因为基于C#的MVC项目实际上是C#项目(和Web应用程序项目)。对于Visual Basic,您将改为使用{F184B08F-C81C-45F6-A57F-5ABD9991F28F}

$RootKey$是Visual Studio在以下位置存储配置的真实注册表项的抽象:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0_Config

(注意:不要尝试手动编辑此密钥下的任何内容,因为Visual Studio可以随时覆盖它。)

其余部分应该是自解释的:此选项将.spark文件的默认构建操作设置为“内容”,因此这些文件包含在发布过程中。

现在您需要做的就是将这段文本放入扩展名为pkgdef的文件中,放在

下面的某处
%PROGRAMFILES(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\Extensions

(在64位系统上)或

%PROGRAMFILES(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\Extensions

(在32位系统上),Visual Studio将在下次启动时自动加载和应用设置。要撤消更改,只需删除文件。

答案 2 :(得分:-2)

Visual Studio确实发布了字体文件。在特殊情况下,我们将扩展程序从.ttf重命名为.jpg并将其发布。