问题标签 [assemblyversions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3805 浏览

.net - 无法加载文件或程序集 System.ComponentModel.Annotations,版本 = 4.2.0.0

我意识到有人问过这个问题,但我已经尝试了所有我能找到的建议解决方案。

我有一个负载测试项目(具有.loadtest继承自的文件和类Microsoft.VisualStudio.TestTools.WebTesting.WebTest)。它必须针对 .Net Framework(版本 4.6.1)而不是 .Net Core。

它引用了一个以 .Net Standard 2.0 为目标的项目,并且加载项目和 .Net Standard 项目都System.ComponentModel.Annotations添加了(4.5.0 版)Nuget 包。

当我尝试运行负载测试本身时,我收到以下异常:

我尝试将 app.config 文件添加到具有绑定重定向的负载测试项目中,但它对异常没有任何影响。

我不能下移到 NuGet 包的 4.4.1 版,因为其他地方的其他项目依赖它是 4.5 版。

我读过这个包中的版本控制存在问题。事实上,当我检查构建的 .Net Standard 项目 dll 的依赖项时,它似乎不是针对指定的 4.5.0,而是版本 4.2.0.0。

在此处输入图像描述

现在,我可以通过删除 NuGet 包引用并在 Packages 文件夹中添加对 dll 的手动引用,将项目强制为正确的版本(似乎是 4.2.1.0),但随后链中的另一个项目拒绝接受我给hintPath它,并默认为不同的位置和版本:

在此处输入图像描述

所以我不能强制我需要的所有项目都使用我想要的 dll 的实际版本和位置。

只是想知道是否有人可以提出任何可能对这里有所帮助的行动方案,因为我对如何强制整个事情使用正确的版本有点茫然。通过绑定重定向,或者让所有项目接受我给他们的 dll 的路径。

0 投票
0 回答
45 浏览

winforms - 产品版本与组装版本

我有一个 winform 应用程序和一个 Visual Studio 安装程序设置项目,项目输出设置为此 winform 应用程序。

此 winform 作为 msi 安装程序从网站调用,它将值保存在注册表中,以便下次调用 winform 应用程序作为 uri 协议方案。

现在从网上我想检查两件事:

1.) 这个应用程序是否已经安装在客户端机器上?

为此,我可以放置一个注册表检查代码来检查是否安装了应用程序

2.) 安装的应用程序的版本是什么。

对于版本,第 1 点中描述的注册表值还提供了其他参数,例如“DisplayVersion”和“version、VersionMajor 和 VersionMinor”。

那么对于版本来说,更新winform应用程序的程序集版本的最佳方法是什么。我应该更改 winform 应用程序的 AssemblyInfo 类还是应该更改设置项目属性中的版本?

设置项目属性: 在此处输入图像描述

同样在注册表中,我得到以下版本的 dword 值,如何解码这些十六进制值以获得版本号?

在此处输入图像描述

0 投票
1 回答
117 浏览

visual-studio - 自动更改仅在 Dot Net 中有代码更改的程序集的版本

我正在为我的应用程序创建补丁以向客户部署小的更改。在我的应用程序中,我有 100 个 .CSProject。在 100 个库中,我在类库 A、B、C 中进行了代码更改,并且库 D 正在调用 A、B 和 C 库。那么当我构建我的应用程序时有什么办法吗?它应该只更改有更改的 A、B、C 和 D 库的版本。手动我可以更改,但我需要任何自动方式。

0 投票
1 回答
59 浏览

msbuild - 使用 cc.net 和 msbuild 设置程序集文件版本和程序集版本

我们正在使用 cc.net(巡航控制)和 msbuild 来构建一次点击应用程序。这是 msbuild 任务:

所以我正在尝试设置已发布输出的程序集文件版本和程序集版本。

问题是变量 $CCNetLabel 似乎不起作用。如果我将 AssemblyFileVersion 和 AssemblyVersion 设置为 3.2.0.0 之类的值,则输出具有此版本号,但 $CCNetLabel 不起作用。

有没有人有任何想法如何使这项工作?

谢谢伊恩

0 投票
0 回答
416 浏览

c# - 如何帮助我的控制台应用程序找到所有引用的程序集?

tl;dr:我的 .NET Core 3.1 控制台应用程序因 a 崩溃,FileNotFoundException因为版本 A 中存在(引用?)程序集,但版本 B 中需要。怎么办?


我正在尝试运行一个控制台应用程序,该应用程序现在是为 .NET Core 3.1 构建的,但在转换之前它曾经是一个 .NET Framework 4.8 项目。

控制台应用程序崩溃并显示3.1.0.0System.IO.FileNotFoundException中的程序集Microsoft.Extensions.FileProviders.Physical无法找到。现在,我可以确认它不存在 - 在我的控制台应用程序文件所在的目录中,有一个名为Microsoft.Extensions.FileProviders.Physical.dll的文件,但它的程序集版本是3.1.6.0.exe

控制台应用程序及其依赖项是所述文件夹中更大项目的一部分,共有 1,200 多个 DLL。

在 .NET Framework 中,我会使用绑定重定向来使用指定程序集的当前版本 3.1.6.0。不过,在 .NET Core 中,我知道这些绑定重定向不再是一回事了。因此,我不确定如何继续,甚至如何找出运行时认为它需要加载Microsoft.Extensions.FileProviders.Physical.dll的原因。

我可能已经找到了一个加载版本不匹配的程序集的部分解决方案(参见下面的观察(6)),但是,我仍然得到一个FileNotFoundException,这次是Microsoft.AspNetCore.Mvc.Abstractions.

一些观察和尝试解决这个问题:

  • (1) > 1,200 个.csproj文件中没有一个包含字符串“Physical”。

  • (2) 400多个.deps.json文件中提到“Microsoft.Extensions.FileProviders.Physical.dll”,均指3.1.0.0版本。

  • (3) 所有相应的 DLL 都加载到 ASP.NET Core 应用程序中,其中版本不匹配似乎不会导致任何问题。

  • (4).deps.json我的控制台应用程序本身的文件没有提到“Microsoft.Extensions.FileProviders.Physical.dll”。

  • (5) 将文件的正确版本 (3.1.0.0) 放入.exe文件所在的目录以及.exe文件的执行位置不会改变任何内容。FileNotFoundException仍然发生,仍然抱怨缺少“Microsoft.Extensions.FileProviders.Physical.dll”,版本 3.1.0.0 。

  • (6) 根据CodeProject 文章中提供的.NET Core 中程序集解析的信息,我尝试自己从同一目录强制加载程序集(初步代码,依赖于工作目录):

    这似乎在一定程度上有所帮助!现在,可以加载“Microsoft.Extensions.FileProviders.Physical.dll”程序集和大量(超过 250 个)程序集。但是一旦需要加载“Microsoft.AspNetCore.Mvc.Abstractions”3.1.0.0,这就会失败,这实际上不在.exe文件周围的任何地方。显然,它必须从其他地方加载(?)

  • (7) 虽然上面似乎提供了关于版本不匹配的部分解决方案,但我们的整个源代码不包含其他出现的“AssemblyLoadContext”。因此,ASP.NET Core 应用程序显然使用其他一些机制避免了版本不匹配问题。

  • (8) 构建我的控制台应用程序并将构建输出设置为诊断1确认“Microsoft.Extensions.FileProviders.Physical.dll”文件的可疑行为(输出的缩短摘录):

    在那里,(A)、(B) 和 (C) 是我们自己项目的程序集。但据我所知,他们的两个.csproj文件都没有提到“物理”文本,所以我不明白为什么据称他们需要 DLL。

  • (9) 对于“Microsoft.AspNetCore.Mvc.Abstractions”程序集,诊断输出显示:

    再一次,(B) 是我们自己的程序集(与 (8) 中的 (B) 相同),但查看.csproj文件并没有显示“Mvc.Abstractions”的单个出现。


我发现了几个似乎可以提供解决方案的问题,但没有一个对我有用:


如何使指定程序集的运行时加载版本为 3.1.6.0 而不是请求的版本 3.1.0.0?或者,我如何找出运行 ASP.NET Core 应用程序时运行时的工作方式?


1:在 VS2019 中:工具 -> 选项 -> 项目和解决方案 -> 构建并运行 -> MSBuild 项目构建输出详细程度 -> 诊断

0 投票
1 回答
83 浏览

regex - Powershell中的正则表达式用于获取程序集版本号

我正在尝试创建一个脚本,该脚本将从解决方案中找到并返回程序集版本。它涵盖了一些测试场景,但我找不到正确的正则表达式来检查版本的格式是否正确(1.0.0.0 可以,但是 1.0.o.0)并且包含 4 位数字?这是我的代码。

}

0 投票
1 回答
307 浏览

c# - 是否可以使用语义发布自动化 .Net 程序集版本控制?

我有一个 C# 解决方案,其中包含使用 .Net 6 的单个项目和多个库。我正在使用常规提交(使用 husky 提交),并希望使用语义发布基于提交在 Github 上将最新构建部署为 ZIP 文件消息。


我为 C# 项目尝试的设置:

  • 安装包

.

  • 在根目录中创建一个.releaserc.json文件

.

  • package.json文件中将密钥设置version0.0.0-development,将密钥设置privatetrue并添加存储库 url
  • 在工作流目录中创建一个release-on-push-on-main-branch.yml文件

.

它似乎有效,每当我推送到主分支时,它都会将最新版本的发行版(包含 DLL)部署到 Github 版本。


但是正如您所知,语义发布不会发布正确的包版本,因为它还不知道程序集版本。它从package.json文件中获取版本。

我想要达到的目标:

  • 在解决方案中对库或应用程序进行更改时,它应该根据常规提交自动增加它们的程序集版本。但显然,如果该项目被修改。
  • 运行发布过程时,semantic-release 应该发布项目"name": "my-project-${assembly-version}.zip"

有什么我可以使用的吗?

0 投票
0 回答
9 浏览

gitlab - 在 Git Repo 中反映 CI AssemblyInfo Patcher 或 File Content Replacer 更改

我想使用 teamcity AssemblyInfo Patcher 或 File Content Replacer 在 CI 构建中/之前自动更新程序集版本。但是,这些更改会在构建后恢复到初始状态。相反,我想保留更改并将它们反映在 GitLab 存储库中。这可能吗?

0 投票
0 回答
15 浏览

asp.net - asp.net 6 应用程序中的版本管理和实现

我正在研究 asp.net web-api .NET 6 应用程序。我想给前台发送一个版本的软件,以便在第一次登录菜单中显示这个版本。这样做的最佳方法是什么?我应该使用程序集版本控制并获取它并从端点发送到前面吗?或者我应该在我的数据库中制作一张桌子。当我更改应用程序版本时,只需将最新号码发送到前面并将新号码添加到此表中。

非常感谢

0 投票
0 回答
5 浏览

asp.net-web-api - asp.net 核心的应用程序版本控制

我需要为我的 asp.net 6 web-api 应用程序实现一个版本号,以便在我们的前视图中显示。我查看了互联网并找到了程序集版本控制,但有些人还建议我避免困难,只是通过在数据库中有一个表甚至硬编码来做到这一点。最好和推荐的方法是什么?我什至没有关于程序集版本控制的好指南。

非常感谢。