参考新 CSPROJ 格式的 GAC 程序集?

2024-05-21

我使用的是 Visual Studio 2019 预览版 2.1。我有一个 .NET Framework 4.6.1 类库 C# 项目,其中有一些采用旧 csproj 项目格式 (ToolsVersion="15.0") 的 Azure 引用。这个旧的 csproj 目前构建和工作得很好。我正在尝试迁移到新的项目格式。一切都很顺利,除了我有一个引用不是来自 NuGet,它来自 GAC:Microsoft.WindowsAzure.ServiceRuntime。但是,我还没有弄清楚如何获取新的项目格式来查找程序集。例如,这是新的项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <None Include="app.config" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.KeyVault" Version="2.3.2" />
    <PackageReference Include="Microsoft.Azure.KeyVault.Core" Version="1.0.0" />
    <PackageReference Include="Microsoft.Azure.KeyVault.WebKey" Version="2.0.7" />
    <PackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="3.19.1" />
    <PackageReference Include="Microsoft.Rest.ClientRuntime" Version="2.3.8" />
    <PackageReference Include="Microsoft.Rest.ClientRuntime.Azure" Version="3.3.7" />
    <PackageReference Include="Microsoft.WindowsAzure.ConfigurationManager" Version="3.2.3" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
    <PackageReference Include="WindowsAzure.Storage" Version="9.0.0" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="Microsoft.WindowsAzure.ServiceRuntime, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Runtime.Caching" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
</Project>

事实上,Microsoft.WindowsAzure.ServiceRuntime 引用与旧格式完全相同。当在 VS 中加载它时,会产生以下警告:

警告 MSB3245 无法解析此引用。无法找到程序集“Microsoft.WindowsAzure.ServiceRuntime,Version=2.7.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误。 MyProject C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 2114

我尝试删除该版本:

<Reference Include="Microsoft.WindowsAzure.ServiceRuntime" />

但这并没有帮助。如果我删除它并尝试从 VS 用户界面添加引用,我会看到“Framework”(GAC)中有一堆 Microsoft.* 和 System.* 选项,但 Microsoft.WindowsAzure.ServiceRuntime 不是其中之一他们。只是为了确认我启动了 ILSpy 并选择了“从 GAC 打开...”,果然它与一堆未出现在 VS 用户界面中的其他程序集一起存在。

如何让 VS 从 GAC 加载此参考?

Thanks


所以我发现GitHub 上的这个线程 https://github.com/dotnet/sdk/issues/987这表明 未发现添加到 GAC 的程序集是预期行为:

此行为是设计使然。您可以选择重新加入,如图所示here https://github.com/dotnet/sdk/issues/987#issuecomment-286307697。这不应被视为一种解决方法,而是一种经过深思熟虑且受支持的选择加入,您接受在不同计算机上具有潜在不同(甚至不正确)构建行为的后果。

解决方案是执行以下操作:

<PropertyGroup>
  <AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>
</PropertyGroup>

我可以确认,即使不使用 HintPath,这也能完全解决我的问题。

但自然的下一个问题是——如果默认情况下解析 GAC 中添加的程序集不起作用,为什么 Microsoft 不利用 NuGet 作为 Azure SDK? NuGet 中唯一的官方 Azure 参考是旧的。这是否意味着任何使用新 CSPROJ 格式的 Azure 项目都需要手动将 GAC 添加到 AssemblySearchPaths 中?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

参考新 CSPROJ 格式的 GAC 程序集? 的相关文章

随机推荐

  • 我应该把 .gitignore 放在哪里才能影响所有项目?

    我应该在哪里放置一个 gitignore文件以便我的所有项目都使用这些设置 我尝试了各种文件夹 只有将其放入项目文件夹中才能使其正常工作 但是设置 当然 仅应用于该项目 而不是我的其他项目 git 包含一个 全局 配置选项 可以告诉它在启动
  • FLAG_ACTIVITY_REORDER_TO_FRONT 被忽略

    我有一个包含项目列表的 FragmentActivity 当应用程序处于后台时 可以推送该项目列表 发生这种情况时 我想创建一个状态栏通知并提醒用户更新 当用户单击通知时 活动应重新排序到前面并显示在屏幕上 同时在列表底部显示新项目 所以我
  • 简单的WPF + MVVM绑定

    我有一个名为MyWindow源自于Window 我使用 MVVM 模式 因此在代码隐藏中我有以下字段 public MyViewModel ViewModel new MyViewModel ViewModel包含一个集合Person 我想
  • Bash 脚本:自动为 mpeg-dash 进行 ffmpeg 编码

    我正在编写一个 bash 文件来创建视频编码和串联 以供 dash 实时流媒体使用 基本上 它读取输入视频文件夹 将所有视频编码为三种分辨率格式 然后将它们连接起来创建三个适应集 DIAGRAM 该脚本检查 fps 一致性 如果输入不是 1
  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 我的CSS出了什么问题?活动链接不改变颜色

    我无法让我的 WordPress 菜单活动链接保持红色 我添加了我认为与导航相关的 CSS 还有正文等 以防影响问题 感谢您的帮助 body font family Helvetica Neue sans serif font size 1
  • 错误“没有可用于此声明的持久卷,并且未设置存储类别”

    是需要在nodes中手动创建目录还是pv自动创建 这是我的 pv 和 pvc 文件 我看到这个错误 没有可用于此声明的持久卷 并且未设置存储类别 如何解决这个问题 kind PersistentVolume apiVersion v1 me
  • 从 Angular 4 中的选择选项获取价值

    如何从 Angular 4 中的 select 选项获取值 我想将它分配给 component ts 文件中的一个新变量 我已经尝试过但没有输出任何内容 你也可以使用 ngModel 来做到这一点吗 组件 html
  • Android 中有没有办法获取 SD 卡大小?

    欢迎大家 我已经在 Stackoverflow 和 google 上尝试过与此相关的每个问题 但没有一个有效 我已经尝试过类似下一个链接的操作 但它返回的内容与内部存储相同 如何获取外部存储 SD 卡的大小 带安装的 SD 卡 https
  • 在 .NET 并发线程之间传递数据的最佳方式是什么?

    我有两个线程 一个需要轮询一堆单独的静态资源以查找更新 另一种需要获取数据并将其存储在数据库中 线程1如何告诉线程2有东西要处理 如果数据块是独立的 则将数据块视为要由线程池处理的工作项 使用线程池和QueueUserWorkItem将数据
  • 如何在 Windows 64 上安装 NumPy?

    NumPy 安装程序在注册表中找不到 python 路径 无法安装 需要 Python 2 5 版本 但在注册表中未找到该版本 OK 我必须修改注册表吗 我已经修改了 PATH 以指向Python25安装目录 我可以检查一下您使用的是什么安
  • 如何缓存 twitter api 结果?

    我想缓存 twitter api 结果的结果并将其显示给用户 缓存结果的最佳方法是什么 我正在考虑根据时间限制将结果写入文件 可以吗 还是应该使用任何其他方法 最重要的是 理想的缓存时间是多少 我想显示来自 twitter 的最新内容 但
  • OAuth2.0 redirect_uri 的参数值无效:缺少方案

    我正在将 Oauth 2 0 流程用于部署在 GCP 中的 appengine Web 应用程序 我正在使用 IAP 我有一个使用 Cloud KMS 加密的有效 cliend secret 文件 但我遇到了以前没有的错误 oauthlib
  • 扫描 PHP 上传的病毒

    我目前正在使用以下代码来扫描作为申请表的一部分上传的文件 safe path escapeshellarg dir file command usr bin clamscan stdout safe path out int 1 exec
  • 有没有办法让 React 为孩子自动定义“键”?

    我正在学习 React 我偶然发现了 动态儿童 的这个怪癖 带有代码示例的序言 Render Pass 1
  • 使用中断选项顺序执行函数

    我的操作系统中有一个线程 它以固定的时间间隔被调用 然后顺序执行 10 15 个不同函数的列表 每个函数都有一个返回参数 该参数要么为 0 正常 要么为非 0 错误 看起来像这样 while 1 error function 1 error
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • 按位运算符简单地翻转整数中的所有位?

    我必须翻转整数的二进制表示形式中的所有位 鉴于 10101 输出应该是 01010 当与整数一起使用时 完成此操作的按位运算符是什么 例如 如果我正在编写类似的方法int flipBits int n 什么会进入身体 我只需要翻转数字中已经
  • C# using 语句是否执行 try/finally ?

    假设我有以下代码 private void UpdateDB QuoteDataSet dataSet Strint tableName using SQLiteConnection conn new SQLiteConnection co
  • 参考新 CSPROJ 格式的 GAC 程序集?

    我使用的是 Visual Studio 2019 预览版 2 1 我有一个 NET Framework 4 6 1 类库 C 项目 其中有一些采用旧 csproj 项目格式 ToolsVersion 15 0 的 Azure 引用 这个旧的