0

我正在尝试在 XML 级别的项目模板中创建一个自定义命名属性来存储一个布尔值,我可以使用它来跟踪我在项目模板文件中执行的某些导入的成功。

我希望能够为项目模板文件声明一个属性,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" InitialTargets="TestImports" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Attributes>
    <Attribute Name="ImportedProp" Value="False" />
  </Attributes>
  <Import Condition="Exists('..\SomeProj.props')" ImportedProp="true" Project="..\SomeProj.props" />
  <Target Name="TestImports">
  <Error Text="Unable to find Common Properties." Condition="'$(ImportedProp)' == true" />
  </Target>

遗憾的是,上述声明属性的方法无效。Visual Studio 根本不喜欢它。它编译得很好,但是当您使用模板在 Visual Studio 中创建新项目时会出错。

因此,我想创建一个属性名称“ImportedProp”(例如正确导入),并且如果导入成功,则能够在导入调用期间将其设置为 true。

如果在所有导入调用之后属性“ImportedProp”仍然为假,我可以出错。

问题是,据我所知,没有办法仅在 vstemplate 或 csproj 模板的 XML 中声明您自己的属性。有谁知道如何为我可以使用的 Visual Studio 2010 模板创建自定义属性,就像我建议的那样?

在 vstemplate 或 csproj 模板 XML 中声明属性只会产生错误,Visual Studio 说它无法识别 vstemplate 或 csproj XML 文件中的 Attributes 标记。

我通常不会为应该如此简单的事情打扰某人,但要么我是盲人,要么在 Google 中输入了错误的关键字,但我找不到任何解决方案或如何做到这一点的示例。

4

1 回答 1

0

事实证明,还有另一种方法可以检查这些导入。您不能创建自定义属性,但可以在项目属性 (.props) 或项目文件中创建一个值,就像这样。

<PropertyGroup>
<SettableVal> *Value* </SettableVal>
</PropertyGroup>

然后你可以随心所欲地使用它。在整个项目文件或模板中控制您的导入、引用包含或其他内容。

于 2012-08-22T22:18:56.860 回答