我有一个.Net Core 3.1 MSTest项目,该项目调用一个连接到我的数据库的单独的类库,该类库首先在数据库中完成,所以我有一个.edmx文件。它在本地运行都很好,但是当我将其发布到Azure DevOps管道时,我开始收到Unable to load the specified metadata resource.
异常。我已经通过放入一些代码以打印出程序集中的所有资源来测试了这一点]
var resources = (Assembly with EDMX).Assembly.GetManifestResourceNames(); System.Console.WriteLine("There are " + resources.Length + " resources in the assembly"); foreach (var resource in resources) { System.Console.WriteLine(resource); }
本地计算机上的结果将打印出我期望的结果
There are 3 resources in the assembly Model.csdl Model.msl Model.ssdl
但是,在我的管道上运行的相同内容显示0个资源
There are 0 resources in the assembly
我在本地和管道上的构建过程完全相同
足够多了]]task: PowerShell@2 inputs: targetType: 'inline' script: | & "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" $(Build.SourcesDirectory)\MyProject\MyProject.sln dir $(Build.SourcesDirectory)\MyProject -include ('*.csdl', '*.msl', '*.ssdl') -recurse & "C:\hostedtoolcache\windows\dotnet\dotnet.exe" test $(Build.SourcesDirectory)\MyProject\Project.Tests\Project.Tests.csproj
为了确保资源确实存在于我的Azure Build代理中,我添加了第二个powershell命令来查找我的.csdl,.msl和.ssdl文件,并确保它们do
Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 5/30/2020 3:54 PM 30772 Model.csdl -a---- 5/30/2020 3:54 PM 10993 Model.msl -a---- 5/30/2020 3:54 PM 23351 Model.ssdl
这些文件位于$(Build.SourcesDirectory)\ MyProject \ Project.Models \ obj \ Debug \ edmxResourcesToEmbed
并且该属性似乎已在我的.csproj中正确设置
<ItemGroup> <EntityDeploy Include="ProjectModels.edmx"> <Generator>EntityModelCodeGenerator</Generator> <LastGenOutput>ProjectModels.Designer.cs</LastGenOutput> </EntityDeploy> </ItemGroup>
我不经常使用.edmx数据库设计,因此我不熟悉应该如何处理资源,是否应该将它们编译到程序集中还是只是在运行时加载?我在本地和管道中的构建过程都显示:
Skipping target "EntityDeployNonEmbeddedResources" because it has no outputs. EntityDeployEmbeddedResources: Processing 1 EDMX files. Starting to process input file 'ProjectModels.edmx'. Finished processing input file 'ProjectModels.edmx'. Finished processing 1 EDMX files.
[不确定这表示什么,但是由于两者都发生,因此我认为这不是问题的一部分。我能想到的唯一其他区别是我的Azure Pipeline使用Visual Studio 2019 Enterprise,而我的本地版本使用Visual Studio 2019社区。
关于如何使这些资源加载到管道构建中的任何想法?
我有一个.Net Core 3.1 MSTest项目,该项目调用一个连接到我的数据库的单独的类库,该类库首先在数据库中完成,所以我有一个.edmx文件。一切都在本地运行良好,但是当我按...
Azure DevOps管道找不到edmx资源