【问题标题】:Problems while trying to load my assembly info file尝试加载我的程序集信息文件时出现问题
【发布时间】:2019-02-02 06:20:21
【问题描述】:

我正在使用 Visual Studio 2017 构建网站。
当我开始我的项目时,我注意到没有任何装配信息文件。
因此我无法加载和检索我需要的属性。
因此,我创建了一个名为 My Project 的子文件夹,并将其放入一个名为 AssemblyInfo.vb 的文件中,如下所示:

<Assembly: AssemblyTitle("ffffffff")>
<Assembly: AssemblyDescription("ddddddddd")>
<Assembly: AssemblyCompany("ccccccccccc")>
<Assembly: AssemblyProduct("hhhhhhhhhhhhh")>
<Assembly: AssemblyCopyright("Copyright © gggggggggg")>
<Assembly: AssemblyTrademark("vvvvvvvvvv")>

<Assembly: ComVisible(True)>

<Assembly: Guid("53a50112-05e2-43c2-b98c-d86d10b00048")>
<Assembly: AssemblyVersion("1.0.27.3")>
<Assembly: AssemblyFileVersion("1.0.27.3")>
<Assembly: NeutralResourcesLanguage("en")>

从那时起,我使用我的代码来get 我需要的信息。
并且在

行中
Dim asm As Object = Nothing
asm = Assembly.LoadFrom(AsseFile)

“AsseFile”是AssemblyInfo.vb的完整路径
向我抛出以下错误:

无法加载文件或程序集 'file:///D:\WorkOnD\Work\Adata\Project\EKKEROSS\entry\entry\My Project\AssemblyInfo.vb' 或其依赖项之一。该模块是 预计包含程序集清单。


我正在使用“.NET Framework 4.0.7”。
我的操作系统是 Windows 7 Ulimate
我在 VS 2017 工作
在开发语言 vb.net

有人可以帮助我吗?
通知
我查看了所有其他解决方案的答案,但没有找到任何与我的问题相关的解决方案
添加
我用来读取文件的代码是:

Dim asm As Object = Nothing
            asm = Assembly.GetExecutingAssembly().GetName().Version
            Dim FVI() As Object = Assembly.GetCallingAssembly.GetCustomAttributes(True)
            For n As Integer = 0 To FVI.Count - 1
                If FVI(n).TypeId.Name = "AssemblyCopyrightAttribute" Then
                    CopyRight = FVI(n).Copyright
                End If
            Next<br/>

但是没有我想要的任何属性名称... 我想我有一个旧版本的网站环境。

【问题讨论】:

  • AsseFile 必须是 DLL 的路径,而不是 .vb 文件。
  • @Hans Passant 是的,亲爱的,你有绝对的权利

标签: vb.net visual-studio-2017 .net-assembly


【解决方案1】:

AssemblyInfo.vb 文件为源代码,需要包含在工程中并编译成最终的.dll 程序集

函数Assembly.LoadFrom(及其变体)将加载已编译的 dll 程序集,而不是源代码。将变量AsseFile 重新指向已编译的程序集,您将更接近所需的解决方案。参考:Assembly.LoadFrom Method

传递给Assembly.LoadFrom 的路径将取决于程序集在文件系统中的位置,类似于:

AsseFile = "D:\WorkOnD\Work\Adata\Project\EKKEROSS\entry\entry\bin\debug\entry.dll"

然后你可以这样做:

asm = Assembly.LoadFrom(AsseFile)

我的测试项目的文件/文件夹结构如下,你应该适当地映射你的项目设置。

项目名称:VBUnitTest

项目目录是 .vbproj 文件所在的位置

项目目录:D:\Projects\Test Apps\VBUnitTests

构建输出路径默认为bin\debug,这可以在项目设置对话框/窗口中确认/更改。

构建输出路径:D:\Projects\Test Apps\VBUnitTests\bin\Debug

对于我的测试项目,变量AsseFile 将保存值:D:\Projects\Test Apps\VBUnitTests\bin\Debug\VBUnitTest.dll

现在,您写道您手动创建了My Project 文件夹和AssemblyInfo.vb 文件,您是否也将这些新项目添加到项目中?

要确认AssemblyInfo.vb 文件包含在项目中,请单击解决方案资源管理器工具栏部分上的View All Files 选项(我的屏幕截图中带有蓝色方块的图标)。您应该会看到按照屏幕截图列出的AssemblyInfo.vb 文件,旁边有一个漂亮的 VB 图标。如果它旁边没有 VB 图标而只有一个虚线文档图标,则该文件不包含在项目中。

项目中包含的文件

3

文件不包含在项目中

要将文件包含在项目中,请右键单击它并选择选项Include in Project

【讨论】:

  • Bin 目录只有一个,而且只在根目录下。仅包含一个名为roslyn 的子目录和一个名为Microsoft.CodeDom.Providers.DotNetCompilerPlatform 的文件。对不起,我很困惑,你能提供更多细节吗?
  • @LefterisGkinis 我添加了更多信息并进行了编辑,希望能包含您需要的所有信息。如果您需要更多信息,请查看并告诉我。
  • 美好的一天...从我所看到的文件包含在项目中但它没有被读取,请在我的帖子中查看以查看我的代码试图红色这个文件.此外,我看到我正在使用以前版本的网站。因此我将其删除并开始一个新的网络,一切都很好。不过还是谢谢
猜你喜欢
  • 1970-01-01
  • 2013-08-11
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多