c# - Visual Studio 2015 无法识别 svg、rect、g、circle 等

标签 c# svg visual-studio-2015

我可以在屏幕上看到一个矩形和文本,所以标记似乎是正确的,但在编辑器中,有一条蓝色波浪线和标记未被识别的消息。似乎所有与 SVG 相关的元素都是如此。

<svg width="400" height="400">
  <g transform="translate(0,0)">
    <rect width="5" height="5"></rect>
    <circle cx="40" cy="19" r="25"></circle>
    <text x="37" y="9.5" dy=".35em">my text</text>
  </g>
</svg>

有办法解决吗?我注意到我也没有这些元素的智能感知。我需要为此添加一个包吗?这是它在我的 VS15 中的样子。

enter image description here

最佳答案

不太喜欢回答我自己的问题,但 react 不那么强烈,我终于想出了一些东西(在很大程度上基于@HansPassant 提供的评论)。

lazy 有效编码器的简短版本。问题是 SVG 标签在扩展名为 HTML 的文件中未被识别为有效元素。坦率地说,我找到了三种处理它的方法,但没有一种是真正令人满意的。

  1. 按照惯例使用 HTML 扩展,并使用 JavaScript 呈现大部分(如果不是全部)图形。因为这样做很常见,所以这是我将使用的方法,直到出现更好的选择。缺点是标记中的 SVG 特定标签没有智能感知支持。

  2. 使用扩展 XHTML。这解决了问题,但该页面根本不呈现为网页。浏览器将其识别为 XML 并照此呈现。

  3. 使用外部文件(例如扩展名 SVG)并将其嵌入到实际网页中。这种方法的缺点是我们需要向页面群中添加另一个文件(我们已经有了 CSS、LESS、JS、部分作为 CSHTML 等)。此外,从 JavaScript 操作图形可能不方便。

使用 this resource ,我发现了一堆要添加的模式。这并不能解决问题,也不是必需的(但可能是一件值得知道的事情)。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <!-- <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> -->
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">

在那篇文章的下方,有一张表格介绍了在网页上使用 SVG 图形的不同方式。

还有一个 different approach基于将架构文件添加到 Visual Studio。这似乎有点老套,而且绝对不是我每次使用新环境时都想做的事情。除此之外,屏幕截图的颜色表明它有点旧,所以我变得谨慎(也 - 有点懒惰)。

关于c# - Visual Studio 2015 无法识别 svg、rect、g、circle 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34997313/

相关文章:

c# - LINQ 中的动态新字段

javascript - SVG 路径元素不会在 JavaFX8 Web View 中触发鼠标事件

javascript - 如何为 svg 的整个 "path"元素设置动画?

javascript - 在 Firefox 中获取 SVG <img> 的高度/宽度

python - 发现单元测试,但未在 VS 2015 中运行

c# - .net 应用程序是否有通配符扩展选项?

c# - Entity Framework : Running code before all migrations

c# - 尝试用前导空格填充小数

c# - 如何在 C# 的控制台应用程序中设置启动对象?

c# - 如何在 Visual Studio 2015 RC 的一个解决方案中使用其他项目 DLL