zoukankan      html  css  js  c++  java
  • Click Once 和 .NET Standard 兼容性问题

    Click Once 和 .NET Standard 兼容性问题

    最近使用Click Once打包使用.NET Standard库的WPF应用时,出现一些无法加载库文件的异常,例如:

    Unable to initialize the application (Could not load file or assembly 'System.Runtime, Version=4.1.1.0, Culture=neutral, 
    PublicKeyToken=b03f5f7f11d50a3a
    ' or one of its dependencies. The System cannot find the file specified.

    这是一个Bug,https://github.com/dotnet/standard/issues/529

    关于.NET Standard lib引用说明的文章:https://andrewlock.net/what-is-the-netstandard-library-metapackage/

    微软给出了一个Workaround:

    在***.csproj中添加如下代码,即可解决

    <ItemGroup>
        <PublishFile Include="netfx.force.conflicts">
          <Visible>False</Visible>
          <PublishState>Exclude</PublishState>
          <IncludeHash>True</IncludeHash>
          <FileType>Assembly</FileType>
        </PublishFile>
      </ItemGroup>
      <Target Name="FixClickOnceDependencies" BeforeTargets="_DeploymentComputeClickOnceManifestInfo">
        <ItemGroup>
          <_noCopyRefs Include="@(ReferencePath)" Condition="'%(ReferencePath.Private)' == 'false'" />
          <_noCopyRefsByFileName Include="@(_noCopyRefs->'%(FileName)')">
            <OriginalItem>%(Identity)</OriginalItem>
          </_noCopyRefsByFileName>
          <_libByFileName Include="@(ReferenceCopyLocalPaths->'%(FileName)')">
            <OriginalItem>%(Identity)</OriginalItem>
          </_libByFileName>
          <_overlappingRefByFileName Include="@(_noCopyRefsByFileName)" Condition="'@(_noCopyRefsByFileName)' == '@(_libByFileName)' AND '%(Identity)' != ''" />
          <_overlappingLibByFileName Include="@(_libByFileName)" Condition="'@(_noCopyRefsByFileName)' == '@(_libByFileName)' AND '%(Identity)' != ''" />
          <_overlappingRef Include="@(_overlappingRefByFileName->'%(OriginalItem)')" />
          <_overlappingLib Include="@(_overlappingLibByFileName->'%(OriginalItem)')" />
        </ItemGroup>
        <ItemGroup Condition="'@(_overlappingRef)' != ''">
          <ReferencePath Remove="@(_overlappingRef)" />
          <ReferencePath Include="@(_overlappingLib)">
            <Private>True</Private>
          </ReferencePath>
        </ItemGroup>
      </Target>
  • 相关阅读:
    年底送书活动:送出6本技术书籍,价值372元!
    (7)ASP.NET WEB服务器控件
    (6)DataTable 转换成 Json
    (9)C#连mysql
    (8)C#连sqlserver
    VM虚拟机
    (7)C#连DB2---oledb方式
    (48)C#网络4 web
    远程桌面
    (47)C#运行时序列化
  • 原文地址:https://www.cnblogs.com/devin_zhou/p/9278858.html
Copyright © 2011-2022 走看看