Visual studio 2010 VS2010-使用<;导入/>;要在安装项目之间共享属性?

Visual studio 2010 VS2010-使用<;导入/>;要在安装项目之间共享属性?,visual-studio-2010,visual-studio,msbuild,wix,Visual Studio 2010,Visual Studio,Msbuild,Wix,当我用复制粘贴三个属性来替换语句时,这个文件为什么不起作用 。/../Setup.Version.proj <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <InstallerMajorVersion>7</InstallerMajorVersion> <InstallerMino

当我用复制粘贴三个属性来替换语句时,这个文件为什么不起作用

。/../Setup.Version.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
    </PropertyGroup>
</Project>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
    </PropertyGroup>
</Project>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="importme.proj" />
    <PropertyGroup>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>
    </PropertyGroup>
    <Target Name="Build">
        <Message Text="$(OutputName)"/>
    </Target>
</Project>

7.
7.
7.
有效:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="../../Setup.Version.proj" />
    <PropertyGroup>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>

7.
7.
7.
asdf-$(InstallerMajorVersion)。$(InstallerMinorVersion)。$(InstallerBuildNumber)
包裹
不起作用:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="../../Setup.Version.proj" />
    <PropertyGroup>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>

asdf-$(InstallerMajorVersion)。$(InstallerMinorVersion)。$(InstallerBuildNumber)
包裹
这里的变量只是求值为空字符串…:(我确信导入项目的路径是正确的


因此,当我从命令行运行msbuild时,它似乎工作正常,但当我在Visual Studio中构建项目时,它工作不正常。这到底是为什么呢?该元素仅在
项目
元素下有效。但是,代码似乎希望将值导入
元素。请尝试将值声明为变量并在主MSBuild文件中引用它们,例如:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="../../Setup.Version.proj" /> <!-- Variables declared in here -->
    <PropertyGroup>
        <InstallerMajorVersion>$(MyInstallerMajorVersion)</InstallerMajorVersion>
        <InstallerMinorVersion>$(MyInstallerMinorVersion)</InstallerMinorVersion>
        <InstallerBuildNumber>$(MyInstallerBuildNumber)</InstallerBuildNumber>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>

$(MyInstallerMajorVersion)
$(MyInstallerMinorVersion)
$(MyInstallerBuildNumber)
asdf-$(InstallerMajorVersion)。$(InstallerMinorVersion)。$(InstallerBuildNumber)
包裹
该元素仅在
项目
元素下有效。但是,代码似乎要将值导入
元素。请尝试在Setup.Version.proj中将值声明为变量,并在主MSBuild文件中引用它们,例如:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="../../Setup.Version.proj" /> <!-- Variables declared in here -->
    <PropertyGroup>
        <InstallerMajorVersion>$(MyInstallerMajorVersion)</InstallerMajorVersion>
        <InstallerMinorVersion>$(MyInstallerMinorVersion)</InstallerMinorVersion>
        <InstallerBuildNumber>$(MyInstallerBuildNumber)</InstallerBuildNumber>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>

$(MyInstallerMajorVersion)
$(MyInstallerMinorVersion)
$(MyInstallerBuildNumber)
asdf-$(InstallerMajorVersion)。$(InstallerMinorVersion)。$(InstallerBuildNumber)
包裹

我试着复制,一切正常:

进口项目

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
    </PropertyGroup>
</Project>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
    </PropertyGroup>
</Project>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="importme.proj" />
    <PropertyGroup>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>
    </PropertyGroup>
    <Target Name="Build">
        <Message Text="$(OutputName)"/>
    </Target>
</Project>
使用

msbuild main.proj

更新:您需要重新加载项目,以便更新或使用包含的文件。

我已尝试复制,并且一切正常:

进口项目

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
    </PropertyGroup>
</Project>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <InstallerMajorVersion>7</InstallerMajorVersion>
        <InstallerMinorVersion>7</InstallerMinorVersion>
        <InstallerBuildNumber>7</InstallerBuildNumber>
    </PropertyGroup>
</Project>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="importme.proj" />
    <PropertyGroup>
        <OutputName>asdf-$(InstallerMajorVersion).$(InstallerMinorVersion).$(InstallerBuildNumber)</OutputName>
        <OutputType>Package</OutputType>
    </PropertyGroup>
    <Target Name="Build">
        <Message Text="$(OutputName)"/>
    </Target>
</Project>
使用

msbuild main.proj


更新:您需要重新加载项目以更新或使用包含的文件。

它不起作用的原因是Visual Studio缓存了包含的文件,因此我对它所做的任何更改直到重新加载解决方案或重新启动Visual Studio后才生效。这似乎是VS 2010的限制。重新加载后VS 2010,一切正常。

它无法正常工作的原因是Visual Studio缓存了包含的文件,因此我对它所做的任何更改都不会生效,直到我重新加载解决方案或重新启动Visual Studio。这似乎是VS 2010的一个限制。重新加载VS 2010后,一切正常。

应该可以-请尝试更正斜杠“.\..\Se…”,然后查看MSBuild是否会产生任何类型的警告。不知道。注意:您的问题似乎缺少“相同错误”的实际消息。这只是一个与未设置的变量相关的错误。如果我粘贴了这些变量,则错误会消失并且有效。应该可以-尝试更正斜杠“.\..\Se…”并查看MSBuild是否生成任何类型的警告。不知道。注意:您的问题似乎缺少“相同错误”的实际消息。这只是一个与未设置的变量相关的错误。如果我粘贴它们,错误就会消失,并且有效。该死,它们仍然没有定义。我也无法在网上找到任何好的例子…@arex1337你能发布Setup.Version.proj文件的内容吗?@arex1337嗯。我唯一能想到的可能是操作顺序()。如果我想到其他任何事情,我会让你知道。在Setup.Version.proj中定义
7
,但是在主项目文件中引用
$(MyInstallerMajorVersion)
尝试修复Setup.Version.proj,看看会发生什么。我想你可能误解了我问题的一个答案。我不引用$(MyInstallerMajorVersion)。我也尝试过akton的建议,但没有成功。该死,它们还没有定义。我也找不到这方面的好例子…@arex1337你能发布Setup.Version.proj文件的内容吗?@arex1337嗯。我唯一能想到的可能是操作顺序()。如果我想到其他任何事情,我会告诉您。在Setup.Version.proj中,您定义了
7
,但是在主项目文件中,您引用了
$(MyInstallerMajorVersion)
尝试修复Setup.Version.proj,看看会发生什么。我想您可能误解了我的问题的一个答案。我不引用$(MyInstallerMajorVersion)。我也尝试过阿克顿的建议,但没有成功。啊哈!!我也可以从命令行使用,但不是从Visual studio使用!到底为什么?你对配置|平台之类的元素有什么条件吗?可能控制台和VS之间有什么不同?在哪个元素上?我粘贴的正是它在这里的外观。尝试将
进入
对不起,什么?只是一个空的,或者?我不明白:PAha!!它也可以从命令行为我工作,但不是从Visual studio!到底为什么?您对元素(如配置|平台)有任何条件吗?可能是console和VS之间的条件不同?在哪个元素上?我粘贴的正是我所做的t看这里。试着把
放进
对不起,什么?只是一个空的,还是?我不明白:P