我的asp.net mvc项目中有一个目录/media/fonts
,其中包含我网站的字体。当我在Visual Studio中使用“发布”工具时,即使它包含在我的项目中,也会忽略此文件夹。其他文件夹/media/images
和/media/css
包含在内。
有没有办法告诉Visual Studio在发布时不要忽略这个文件夹?
答案 0 :(得分:43)
从属性窗口中选择您的字体文件并将构建操作更改为内容。
答案 1 :(得分:27)
您可以通过修改字体文件扩展名的默认构建操作(.eot,.ttf等)来永久修复此问题
此链接已被残酷的时间暗杀,所以这里是其内容的复制/粘贴:
可以在注册表中配置文件类型的默认构建操作。但是,我们不是手动破解注册表,而是使用更好的方法: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
并将其发布。