【问题标题】:How to make intellisense work with NANT Files in Visual Studio 2008?如何使智能感知在 Visual Studio 2008 中使用 NANT 文件?
【发布时间】:2011-03-01 16:07:22
【问题描述】:

我从一个空项目开始,并尝试使用

设置我的构建文件

这是我迄今为止尝试过的:

  1. 通过使用 -help 选项运行 NAnt,了解我正在使用的 NAnt 版本。
  2. 在以下字符串中替换了我在以下 URL 中使用的 NAnt 版本:
    • http://nant.sourceforge.net/release//nant.xsd
    • 在本例中,假设为 0.90
  3. 下载文件:从上面的URL到%VS_HOME%\Common7\Packages\schemas\xml
    • http://nant.sourceforge.net/release/0.90/nant.xsd
  4. 在 VS 中打开了我的构建文件(来自我的解决方案和项目)
  5. 从菜单中单击 XML->Schemas... 添加我之前下载的 nant.xsd 到 IDE。
  6. 添加架构后,确保在 XML 架构 窗口的 Use 列中它旁边有一个绿色复选标记。
  7. 在我的构建文件的 元素中添加了以下属性:
  8. XML Schemas 窗口上单击了确定
  9. 最后,我使用 open with... XML Editor 重新打开了我的构建文件。

错误列表 中执行上述过程后,我在 messages 部分中获得了一个列表,但在键入时我没有收到任何智能感知建议(默认值除外对于 XML,例如 !--、![CDATA[ 和 ?)

还有什么我需要改变才能在 VS2008 中工作吗?

【问题讨论】:

    标签: visual-studio-2008 intellisense nant


    【解决方案1】:

    我将我拥有的版本 (0.85) 附带的 nant.xsd 文件添加到 VS 中设置的架构中,然后将其添加到我的构建文件中:

    <project xmlns="http://nant.sf.net/release/0.85/nant.xsd" name="foo">
    

    而且效果很好。您确定您为 0.90 版本声明的 XML 命名空间是正确的吗?也许是 sf.net 而不是 sourceforge.net。

    【讨论】:

    • 我认为问题在于我有 nant.sourceforge.net 而不是 nant.sf.net 一旦我改变它似乎工作!谢啦! :) 此外,我不必在 XML->Schemas... 菜单中更改它,为了让它工作,我只在我的构建文件中更改了它。 (当我去检查 XML->Schemas... 菜单中的设置时,域名已经改变了)。
    • 这很有趣,因为架构中的 targetNamespace 属性被声明为 nant.sf.net/release/0.85/nant.xsd。去图:)
    【解决方案2】:

    看看nantschema task。您可以让 nant 吐出自己的 XML 模式,其中将包括任何第三方扩展(nantcontrib、自定义任务等)。

    我已经在我的开发机器上设置了一个名为 nant.myprojectname.com 的网站(其中 myprojectname 被我想要调用我的项目的任何内容替换)并且我让 nant 将架构 xsd 文件复制到那里作为构建过程的一部分。我只是将 nant.myproject.com 放入本地主机文件中,以便在本地开发机器上解析它 - 我真的不需要其他地方可用的架构。

    然后我将以下内容放入 nant 项目元素中:

    <project
        xmlns="http://www.myprojectname.com/myprojectnamenant"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="www.myprojectname.com/myprojectnamenant http://nant.myprojectname.com/myprojectnamenant.xsd"
        default="go"
        name="myprojectname">
    

    schemaLocation 属性告诉 Visual Studio(或其他)查​​看 http://nant.myprojectname.com/myprojectnamenant.xsd 的架构。可能需要在 Intellisense 启动之前重新加载 VS。

    【讨论】:

    • 哇!感谢那!听起来很有用!
    • 啊,好吧,所以您可以拥有一个全局配置属性,该属性将指向它,然后在为您所在的任何项目生成它之后,以防 vs 之类的东西需要它。
    • @leeand00 我已经更新了我的答案,提供了更多关于我所做工作的详细信息。
    【解决方案3】:

    我对这个问题有点晚了,但我正在寻找这个问题的解决方案同时也希望 NAntContrib 具有智能感知功能。为此,请按以下步骤操作:

    第 1 步:您需要为新的 nant.sxd 创建一个构建脚本,让我们将此文件称为 nantxsd.build,其中包含 NAntContrib 任务:

    <project name="nant" default="go">
        <property name="NAntContrib" value="E:\NAnt\nantcontrib-0.91-bin\nantcontrib-0.91\bin" />
        <target name="go">
            <loadtasks assembly="${NAntContrib}\NAnt.Contrib.Tasks.dll" />
            <nantschema output="nant.xsd" target-ns="http://nant.sf.net/release/0.91/nant.xsd"/>
        </target>
    </project>
    

    第 2 步: 然后从命令行构建新的 nant.xsd 文件。如果你已经安装了 NAnt,你应该能够在 nanntxsd.build 脚本所在的目录中打开命令行窗口并运行:

    nant /f:nantxsd.build

    第 3 步: 将新的 nant.xsd 复制到 Visual Studio XML\Schemas 文件夹。例如:

    “C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\nant.xsd”

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2010-10-07
      • 1970-01-01
      • 2021-01-07
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 2014-06-23
      相关资源
      最近更新 更多