鬼影_HC 2021-01-08 23:04 采纳率: 0%
浏览 528

非字符串资源要求将属性 GenerateResource...设置为 true

新使用C# IDE用的是Rider,在Build的时候跑出一个错误,如下

代码如下:

<!-- 4.0 task has some new parameters that we want to make use of if we're targeting 4.0 -->
    <GenerateResource
        Sources="@(EmbeddedResource)"
        UseSourcePath="$(UseSourcePath)"
        References="@(ReferencePathWithRefAssemblies)"
        UsePreserializedResources="$(GenerateResourceUsePreserializedResources)"   //这一段爆红
        AdditionalInputs="$(MSBuildAllProjects)"
        NeverLockTypeAssemblies="$(GenerateResourceNeverLockTypeAssemblies)"
        StateFile="$(IntermediateOutputPath)$(MSBuildProjectFile).GenerateResource.cache"
        StronglyTypedClassName="%(EmbeddedResource.StronglyTypedClassName)"
        StronglyTypedFileName="%(EmbeddedResource.StronglyTypedFileName)"
        StronglyTypedLanguage="%(EmbeddedResource.StronglyTypedLanguage)"
        StronglyTypedNamespace="%(EmbeddedResource.StronglyTypedNamespace)"
        StronglyTypedManifestPrefix="%(EmbeddedResource.StronglyTypedManifestPrefix)"
        PublicClass="%(EmbeddedResource.PublicClass)"
        OutputResources="@(EmbeddedResource->'$(IntermediateOutputPath)%(ManifestResourceName).resources')"
        Condition="'%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' != 'CLR2'"
        SdkToolsPath="$(ResgenToolPath)"
        ExecuteAsTool="$(ResGenExecuteAsTool)"
        EnvironmentVariables="$(ResGenEnvironment)"
        MSBuildRuntime="$(GenerateResourceMSBuildRuntime)"
        MSBuildArchitecture="$(GenerateResourceMSBuildArchitecture)">

      <Output TaskParameter="FilesWritten" ItemName="FileWrites"/>
      <Output TaskParameter="StronglyTypedFileName" ItemName="Compile"/>

      <!-- Gather Sources as an output since it will contain OutputResource metadata indicating the final output resource that it was compiled into -->
      <Output TaskParameter="Sources" ItemName="_Temporary" />

    </GenerateResource>

定位在: 

Microsoft.Common.CurrentVersion.targets

请问大佬们,我需要如何修改才能正确?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 16:42
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,您需要确保<GenerateResource>标签的GenerateResourceUsePreserializedResources属性被设置为true。这是因为在.NET Framework 4.0及以上版本中,如果GenerateResource标签没有指定GenerateResourceUsePreserializedResources属性,则会生成预编译资源文件。

    以下是一个示例:

    <GenerateResource
        ... // 其他属性...
        GenerateResourceUsePreserializedResources="true"
    />
    

    然后,检查<GenerateResource>标签是否出现在您的<Project>元素中,并且其MSBuildRuntimeMSBuildArchitecture属性已正确设置。此外,请确保<Project>元素中的Configuration属性与构建目标匹配。例如,如果您正在构建一个包含多种配置的项目,那么您可能需要为每个配置分别添加不同的GenerateResource标签。

    评论

报告相同问题?