无法用csproj中的属性替换硬编码值

时间:2018-01-04 16:53:58

标签: .net visual-studio msbuild csproj

我有一个csproj加载正常与以下行(它是一个VSTO项目文件):

...
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{BAA0C2D2-18E2-41B9-852F-F413020CAA33}">
        <ProjectProperties HostName="Word" HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}" OfficeVersion="14.0" VstxVersion="4.0" ApplicationType="Word" Language="cs" TemplatesPath="VSTOTemplates" DebugInfoExeName="#Software\Microsoft\Office\15.0\Word\InstallRoot\Path#WINWORD.EXE" DebugInfoCommandLine="/w" AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" />
...

由于某些原因,我想从一个变量设置ProjectProperties的HostPackage属性,而不是硬编码所以我用以下代码替换了这些行:

...
  <PropertyGroup>
    <HostPackageValue>{20A848B8-E01F-4801-962E-25DB0FF57389}</HostPackageValue>
  </PropertyGroup>
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{BAA0C2D2-18E2-41B9-852F-F413020CAA33}">
        <ProjectProperties HostName="Word" HostPackage="$(HostPackageValue)" OfficeVersion="14.0" VstxVersion="4.0" ApplicationType="Word" Language="cs" TemplatesPath="VSTOTemplates" DebugInfoExeName="#Software\Microsoft\Office\15.0\Word\InstallRoot\Path#WINWORD.EXE" DebugInfoCommandLine="/w" AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" />
...

据我所知,这应该是一样的,因为代码没有真正的变化,但由于某种原因,当我尝试重新加载项目时,我收到以下错误

  

无法完成操作。参数不正确(HRESULT异常:0x80070057(E_INVALIDARG))

关于可能是什么原因的任何见解?

1 个答案:

答案 0 :(得分:1)

  

关于可能是什么原因的任何见解?

因为项目内容中的任何内容都会被MSBuild 忽略,所以我们无法使用MSBuild将硬编码值替换为属性。

有关详细信息,请参阅ProjectExtensions Element (MSBuild)