wpf 错误:“名称'mygrid'不存在于当前上下文”当创建一个Windows Docker映像.NET Framework 4.8 Web API与XAML组件

zz2j4svz  于 2023-08-07  发布在  Windows
关注(0)|答案(1)|浏览(137)

我在为我的.NET Framework 4.8 Web API解决方案创建Windows Docker映像时遇到了问题。该解决方案包括一个引用XAML组件的类库,类似于WPF XAML,其中包含一个定义在其中的DataGrid。
当在本地运行应用程序时,一切正常,并且可以在XAML.cs文件中访问名为“mygrid”的DataGrid。然而,在创建Docker镜像的过程中,我收到了错误消息:“当前上下文中不存在名称'mygrid'。”出现此错误的原因似乎是DataGrid是在XAML文件中定义的,而不是在相应的XAML.cs文件中定义的。
我正在寻求有关如何解决此问题的指导,并成功地为我的.NET Framework 4.8 Web API解决方案创建Docker映像,而不会遇到“名称'mygrid'在当前上下文中不存在”错误。
任何建议、见解或替代方法,以确保在构建Docker镜像时在XAML.cs文件中识别DataGrid,将不胜感激。谢谢你,谢谢

dldeef67

dldeef671#

我的猜测是您缺少了导致WPF代码生成触发的MSBuild内容。您可能需要在SDK映像中安装Microsoft.VisualStudio.Workload.ManagedDesktop VS工作负载。
在SDK阶段的Dockerfile中尝试以下操作:

RUN curl -SL --output vs_buildtools.exe https://aka.ms/vs/17/release/vs_buildtools.exe && \
    (start /w vs_buildtools.exe --quiet --wait --norestart --nocache modify \
    --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" \
    --add Microsoft.VisualStudio.Workload.ManagedDesktop) && \
    del /q vs_buildtools.exe

字符串
但退一步说。你不能在Docker容器中使用UI。您的Web API实际上需要DataGrid吗?如果没有,您可能需要考虑重构代码,以便Web API项目所依赖的类库不包括WPF组件。换句话说,将WPF组件重构到与业务逻辑分离的它们自己的库中。

相关问题