带有文件内容的.Net资源使docker构建失败

2024-01-05

“dotnet build”构建一个没有错误的项目,同时 docker build 给出以下错误:

/src/Audit.Worker/Example/Resources.resx : error MSB3103: Invalid Resx file. System.IO.DirectoryNotFoundException: Could not find a part of the path '/src/Audit.Worker/Example/data/example.yaml'. [/src/Audit.Worker/Audit.Worker.csproj]

Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["./Audit.Worker/Audit.Worker.csproj", "Audit.Worker/"]
RUN dotnet restore "Audit.Worker/Audit.Worker.csproj"
COPY . /src/
WORKDIR "/src/Audit.Worker/"
RUN dotnet build "Audit.Worker.csproj" -c Release -o /apps

FROM build AS publish
RUN dotnet publish "Audit.Worker.csproj" -c Release -o /apps

FROM base AS final
WORKDIR /apps
COPY --from=publish /apps .
ENTRYPOINT ["dotnet", "Audit.Worker.dll"]

最终,我明白了原因是什么。

Visual Studio 资源工具(我假设它负责 .resx 文件内容生成)假设文件路径不区分大小写,并以小写形式生成所有文件路径(即数据\example.yaml)。同时,用于构建的基本 docker 映像基于 Linux,其中路径区分大小写。

  <data name="Example" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>data\example.yaml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
  </data>

底线:尽管如此,可行的解决方案是手动编辑 .resx 文件(或在需要时使用小写字母),我们决定完全避免使用资源。似乎不再有适当的支持了。

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

带有文件内容的.Net资源使docker构建失败 的相关文章

  • 为什么选项卡页正文不使用 .NET 选项卡控件进行更新?

    我在使用 C Visual Studio 2010 中的 NET TabControl 时遇到一个奇怪的问题 启动 Windows 窗体应用程序 添加一个选项卡控件和一个按钮 向两个选项卡页添加两个不同的标签 以便您可以区分它们 该按钮的作
  • 如何使 Window.Current 关闭后可见?

    我有一个可以打开新窗口的应用程序 如果原始窗口关闭 然后用户启动应用程序 例如从开始菜单 TryShowAsStandaloneAsync无法打开新窗口 为什么 所以我想 复活 原来的那个 但虽然我用Window Current Activ
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • 底层连接已关闭:接收时发生意外错误

    我来这里是因为我在通过 ftp 协议下载一些文件时遇到问题 这很奇怪 因为它偶尔会发生 甚至对于同一个文件也是如此 只是一个精确度 我正在下载非常大的文件 从 500 Mo 到 30Go 以下是我的函数返回的异常类型 抱歉 这是法语 Sys
  • WCF Xml 与二进制序列化的优缺点

    我知道如果我将二进制序列化与 WCF 一起使用 我就会失去互操作性 如果我愿意接受这一点 我想知道使用二进制比 Xml 是否有效率优势 如果还有我上面没有提到的其他优点和缺点 是的 可能是一个大事件 XML 序列化数据比二进制数据要大 使用
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求
  • 是否可以在 .NET 中编写仅接受数字类型的通用函数?

    假设我想编写一个如下所示的函数 像往常一样 一个简单的示例用于说明目的 Public Function calcSqSum Of T ByVal list As IEnumerable Of T As T Dim sumSq As T Fo
  • 从字符串中获取大写字母的索引[重复]

    这个问题在这里已经有答案了 可能的重复 指定 CamelCase 字符串的算法 https stackoverflow com questions 484085 an algorithm to spacify camelcased stri
  • 为什么我不能执行 foreach (var Item in DataTable.Rows)?

    我无法执行以下操作是否有原因 foreach var Item in DataTable Rows 而不是必须做 foreach DataRow Item in DataTable Rows 我本以为这是可能的 就像其他数据类型一样 例如
  • 使用结构体代替 EF4 属性类型的原语

    我有一个包含 int 位掩码的 EF4 实体 代码优先 我创建了一个 Bitmask 结构 以便更轻松地使用位掩码 提供 bool 属性来访问位 位掩码结构包括用于与 int 相互转换的重载隐式运算符 我尝试将属性类型设置为位掩码结构 但该
  • 当 .NET 项目开源时,谁应该拥有用于签署 .NET 程序集的私钥? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 更具体地说 是一个类库程序集 我最初的想法 让一些指定的管理员进行所有程序集签名 但是 当错误修复和新版本被编写时 二进制文件最终将依赖于它们的
  • 简单委托(delegate)与多播委托

    我已经阅读了很多文章 但我仍然不清楚我们通常创建的普通委托和多播委托之间的区别 public delegate void MyMethodHandler object sender MyMethodHandler handler new M
  • 网络更改时无法从主机连接 Docker 适用于 Windows 的 Docker

    当网络 IP 从办公室更改为家庭时 我无法连接到 docker 容器 但同样适用于 localhost 或 127 0 0 1 我正在连接 VPN 以连接数据库 root 1c970ed5cd64 etc curl http localho
  • JQuery、ASCX 和 webmethods 似乎不起作用

    我有一个级联下拉列表 其中 3 个 类型 类别和子类别 首先类型负载 然后选择类型 类别负载以及选择类别 子类别负载 我还有 2 个按钮 添加类别 和 添加子类别 单击这些按钮后 我调用 JQuery 模态表单来添加它们 我在代码后面使用
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • Windows 8.1可以安装Docker吗?

    我想使用 Docker 将带有 NET Core 3 1 的 Web 应用程序部署到 Heroku 我下载了它 然后告诉我应该使用 Windows 10 适用于 Windows 的 Docker 需要 Windows 10 如果您使用 Wi
  • 如何通过反射获取透明代理的属性值?

    我的代码接收透明代理而不是原始实例 虽然这var type obj GetType 产生原始类的类型 下面的代码抛出TargetException 对象与目标类型不匹配 var value property GetValue obj nul
  • 如何为docker swarm中的容器副本分配不同的端口

    我们正在使用副本 3 在 docker swarm 模式下使用 docker 容器部署 Storm Supervisor 现在我们希望通过浏览器访问 Supervisor 日志 我们公开了可以访问 Storm UI 的端口 8080 这工作
  • Docker pull:不允许操作

    我在拉取一些 docker 映像 但不是全部 时收到此错误 failed to register layer Error processing tar file exit status 1 operation not permitted 例
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act

随机推荐