【问题标题】:error MSB3103: Invalid Resx file. The specified module could not be found错误 MSB3103:Resx 文件无效。指定的模块无法找到
【发布时间】:2020-10-29 13:50:40
【问题描述】:

我正在尝试在 FIRST 次使用 Jenkins 和 build.ps1 在 docker 内构建 c# 项目。

详细错误:

C:\myproject\Properties\Resources.resx:错误 MSB3103:Resx 无效 文件。在第 123 行第 5 位输入数据,无法加载 因为它在构建过程中抛出了以下异常: 找不到指定的模块 [C:\myproject\myproject.Config.csproj]

我可以知道为什么会这样吗?有什么原因吗?

更新

这是 resources.resx

 121  : <data name="config_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
 122  :   <value>..\Resources\config_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
 123  : </data>

这是 Config.csproj

 123  : <Reference Include="CommonServiceLocator, Version=2.0.4.0, Culture=neutral, PublicKeyToken=489b6accfaf20ef0, processorArchitecture=MSIL">
 124  :<HintPath>..\packages\CommonServiceLocator.2.0.4\lib\net46\CommonServiceLocator.dll</HintPath>
 125  :       </Reference>

我不确定错误消息中的这行 no 是否真的指向错误。

【问题讨论】:

  • 一个Dev Community issue为此开放;如果仍然面临这个问题,也许可以考虑在那里投票。
  • @T2PS 检查我更新的答案。我使用了这个 docker 文件并且对我来说工作正常。只需检查和测试这个。

标签: c# docker jenkins build msbuild


【解决方案1】:

在 .resx 文件的 Properties Windows(Ctrl+W, P) 中,将持久性属性更改为:“Embedded in .resx file”以解决问题。

如果您在 Linux 系统中使用 docker 镜像构建项目,所有资源名称必须为小写 Related Answer

【讨论】:

  • 我没有看到持久性属性。我可以知道它在哪里吗?
【解决方案2】:

如果你也有这个问题,这可能对你有用。我花了一周的时间:(

这个错误是因为服务器核心,核心无法识别这种格式。需要使用另一个窗口。

这里是参考链接 => dotnet build fails

更新

这是我针对此问题的最新 docker 文件,并且工作正常。看看它,如果你愿意,可以参考。

不仅需要安装MSBuild工具,还需要安装Management Build工具

#Base Image
FROM mcr.microsoft.com/windows:1903

#Copy Needed Folder
ADD ./setup c:/jenkins 
ADD ./jenkinsdata c:/jenkinsdata

#Jenkins
RUN ["msiexec.exe", "/i", "C:\\jenkins\\jenkins.msi", "/qn"]

#Java
RUN powershell start-process -filepath C:\jenkins\jre-8u251-windows-i586.exe -passthru -wait -argumentlist "/s,INSTALLDIR=c:\Java\jre1.8.0_91,/L,install64.log"

RUN set JAVA_HOME=""c:\\Java\\jre1.8.0_91\\"
RUN set PATH=%PATH%,%JAVA_HOME%\bin

# Install Chocolatey
RUN @powershell -NoProfile -ExecutionPolicy Bypass -Command "$env:ChocolateyUseWindowsCompression='false'; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
RUN powershell choco feature enable -n=allowGlobalConfirmation

# Install Git
RUN powershell choco install git --allow-empty-checksums -y 

# Install DotNet 4.6.1
RUN powershell choco install netfx-4.6.1-devpack --allow-empty-checksums -y 

# Install MsBuild
RUN powershell choco install visualstudio2017buildtools --allow-empty-checksums -y 

# Install ManagementBuildTools
RUN powershell choco install visualstudio2017-workload-manageddesktopbuildtools --allow-empty-checksums -y 

# Delete files
RUN Powershell.exe -Command remove-item c:/jenkins –Recurse  

【讨论】:

  • 不幸的是,choco 在我们的环境中被列入黑名单,并且来自 VSBT 的隐含组件/工作负载已经安装在我们的映像中。不确定在 ResX 中不使用嵌入式图标的问题描述是否会起作用,因为我们的构建使用的是 NetFx ResGen.exe 而不是 dotnet,但也会尝试一下。
猜你喜欢
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多