【问题标题】:Can not replace a hardcoded value with a property in a csproj无法用 csproj 中的属性替换硬编码值
【发布时间】:2018-01-04 16:53:58
【问题描述】:

我有一个 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))

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

【问题讨论】:

    标签: .net visual-studio msbuild csproj


    【解决方案1】:

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

    因为ProjectExtensions 元素中的任何内容都会被MSBuild 忽略,所以我们不能使用MSBuild 将硬编码的值替换为属性。

    详情请见ProjectExtensions Element (MSBuild)

    【讨论】:

    • 非常感谢。你认为有办法克服这个限制吗?我可以有条件地用任务或其他东西编写整个 ProjectExtensions 节点吗?
    • @IgnacioSolerGarcia,在我发布这个答案之前,我和你有同样的问题,但我找不到任何解决方法来克服这个限制(不确定是否有其他魔法可以做到)。因为无论是任务还是其他东西,仍然需要 MSBuild 支持。看起来我们只能在VS之外修改这个元素,但直接的问题是VS抛出了一个不受支持的异常。这就是我没有在答案中添加任何解决方法的原因:( .
    • 我尝试在目标文件中添加 ProjectExtensions 以有条件地导入它,但由于某种原因它不起作用:\
    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多