发布时出现 Acumatica 错误——但未更改代码
Acumatica Error When Publishing -- But No Code Changes Were Made
我正在处理一个专注于库存的自定义处理屏幕。我的代码使用了一个简单的处理语句,并将 InventoryItem 作为数据:
public PXProcessing<InventorySiteItems> Processing;
但是我需要做一个join数据源,所以改成:
public PXProcessingJoin<InventoryItem,
LeftJoin<INItemSite, On<InventoryItem.inventoryID, Equal<INItemSite.inventoryID>>,
InnerJoin<INLocationStatus, On<INLocationStatus.siteID, Equal<INItemSite.siteID>,
And<INLocationStatus.inventoryID, Equal<INItemSite.inventoryID>>>>>> Processing;
这一切都奏效了。但是,为了进行一些调试以检查重复记录,我使用自定义编辑器更改了我的处理屏幕。我想将 InventoryID 添加到列中。 InventoryCD 已经存在,但我想要实际 ID,因为它是唯一的。
我做了更改,但是当我去发布它时,我现在明白了:
Building directory '\WebSiteValidationDomain\App_RuntimeCode\'.
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'InventoryRawAttribute' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'InventoryRaw' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'IsKey' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'DisplayName' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'InventoryRawAttribute' could not be found (are you missing a using directive or an assembly reference?)
Compiler time, in seconds: 8.4989854
我试图取消更改,但错误仍然存在。
我仔细检查了 AcumaticaERP\Pages\PS 目录,ASP 文件是:
<%@ Page Language="C#" MasterPageFile="~/MasterPages/ListView.master" AutoEventWireup="true" ValidateRequest="false" CodeFile="PS501000.aspx.cs" Inherits="Page_PS501000" Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/MasterPages/ListView.master" %>
<asp:Content ID="cont1" ContentPlaceHolderID="phDS" Runat="Server">
<px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%"
TypeName="Plyler.SOBackorderProcess"
PrimaryView="Processing"
>
<CallbackCommands>
</CallbackCommands>
</px:PXDataSource>
</asp:Content>
<asp:Content ID="cont2" ContentPlaceHolderID="phL" runat="Server">
<px:PXGrid ID="grid" runat="server" DataSourceID="ds" Width="100%" Height="150px" SkinID="Primary" AllowAutoHide="false">
<Levels>
<px:PXGridLevel DataMember="Processing">
<Columns>
<px:PXGridColumn DataField="Selected" Width="60" ></px:PXGridColumn>
<px:PXGridColumn DataField="InventoryCD" Width="70" ></px:PXGridColumn>
<px:PXGridColumn DataField="Descr" Width="280" ></px:PXGridColumn>
<px:PXGridColumn DataField="INItemSite__SiteID" Width="140" />
<px:PXGridColumn DataField="INLocationStatus__QtyOnHand" Width="100" />
<px:PXGridColumn DataField="INLocationStatus__QtyAvail" Width="100" />
<px:PXGridColumn DataField="Availability" Width="70" ></px:PXGridColumn></Columns>
</px:PXGridLevel>
</Levels>
<AutoSize Container="Window" Enabled="True" MinHeight="150" />
<ActionBar >
</ActionBar>
</px:PXGrid>
</asp:Content>
所有这些都已发布、编译,并且 运行 过去几天都很好。但是,一旦我添加了该字段,现在我就无法发布它了——即使我支持更改。
我看到一个关于权限问题的旧 post,建议添加:
<add key="aspnet:DisableAppPathModifier" value="false" />
到 -- 下的网络配置文件,我已经完成了,没有任何改变。
是什么导致了这个问题?
[编辑]
我从不在我的源代码中调用 InventoryRaw:
这是 SOBackorderProcess.CS 的第 28 行:
这里是添加了代码片段(遗憾的是,行为没有变化)
跟踪指向源代码文件:
App_RuntimeCode\SOBackorderProcess.cs
您在库存属性的第 28 行有 5 个未引用的类型:
库存原始属性
库存原料
关键点
显示名称
您需要在源代码文件中添加 using
命名空间指令或使用命名空间完全限定类型。
示例:
using PX.Objects.IN;
[InventoryRaw]
[PX.Objects.IN.InventoryRaw]
编辑:
删除部署到 App_RuntimeCode 文件夹的延迟文件。
首先检查App_RuntimeCode文件夹下的目标IIS虚拟目录下的web服务器文件系统中是否有源代码文件。
然后对于 Acumatica 网站的每个租户,检查从代码和数据访问部分部署的自定义项目。
我正在处理一个专注于库存的自定义处理屏幕。我的代码使用了一个简单的处理语句,并将 InventoryItem 作为数据:
public PXProcessing<InventorySiteItems> Processing;
但是我需要做一个join数据源,所以改成:
public PXProcessingJoin<InventoryItem,
LeftJoin<INItemSite, On<InventoryItem.inventoryID, Equal<INItemSite.inventoryID>>,
InnerJoin<INLocationStatus, On<INLocationStatus.siteID, Equal<INItemSite.siteID>,
And<INLocationStatus.inventoryID, Equal<INItemSite.inventoryID>>>>>> Processing;
这一切都奏效了。但是,为了进行一些调试以检查重复记录,我使用自定义编辑器更改了我的处理屏幕。我想将 InventoryID 添加到列中。 InventoryCD 已经存在,但我想要实际 ID,因为它是唯一的。
我做了更改,但是当我去发布它时,我现在明白了:
Building directory '\WebSiteValidationDomain\App_RuntimeCode\'.
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'InventoryRawAttribute' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'InventoryRaw' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'IsKey' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'DisplayName' could not be found (are you missing a using directive or an assembly reference?)
\App_RuntimeCode\SOBackorderProcess.cs(28): error CS0246: The type or namespace name 'InventoryRawAttribute' could not be found (are you missing a using directive or an assembly reference?)
Compiler time, in seconds: 8.4989854
我试图取消更改,但错误仍然存在。
我仔细检查了 AcumaticaERP\Pages\PS 目录,ASP 文件是:
<%@ Page Language="C#" MasterPageFile="~/MasterPages/ListView.master" AutoEventWireup="true" ValidateRequest="false" CodeFile="PS501000.aspx.cs" Inherits="Page_PS501000" Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/MasterPages/ListView.master" %>
<asp:Content ID="cont1" ContentPlaceHolderID="phDS" Runat="Server">
<px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%"
TypeName="Plyler.SOBackorderProcess"
PrimaryView="Processing"
>
<CallbackCommands>
</CallbackCommands>
</px:PXDataSource>
</asp:Content>
<asp:Content ID="cont2" ContentPlaceHolderID="phL" runat="Server">
<px:PXGrid ID="grid" runat="server" DataSourceID="ds" Width="100%" Height="150px" SkinID="Primary" AllowAutoHide="false">
<Levels>
<px:PXGridLevel DataMember="Processing">
<Columns>
<px:PXGridColumn DataField="Selected" Width="60" ></px:PXGridColumn>
<px:PXGridColumn DataField="InventoryCD" Width="70" ></px:PXGridColumn>
<px:PXGridColumn DataField="Descr" Width="280" ></px:PXGridColumn>
<px:PXGridColumn DataField="INItemSite__SiteID" Width="140" />
<px:PXGridColumn DataField="INLocationStatus__QtyOnHand" Width="100" />
<px:PXGridColumn DataField="INLocationStatus__QtyAvail" Width="100" />
<px:PXGridColumn DataField="Availability" Width="70" ></px:PXGridColumn></Columns>
</px:PXGridLevel>
</Levels>
<AutoSize Container="Window" Enabled="True" MinHeight="150" />
<ActionBar >
</ActionBar>
</px:PXGrid>
</asp:Content>
所有这些都已发布、编译,并且 运行 过去几天都很好。但是,一旦我添加了该字段,现在我就无法发布它了——即使我支持更改。
我看到一个关于权限问题的旧 post,建议添加:
<add key="aspnet:DisableAppPathModifier" value="false" />
到 -- 下的网络配置文件,我已经完成了,没有任何改变。
是什么导致了这个问题?
[编辑]
我从不在我的源代码中调用 InventoryRaw:
这里是添加了代码片段(遗憾的是,行为没有变化)
跟踪指向源代码文件: App_RuntimeCode\SOBackorderProcess.cs
您在库存属性的第 28 行有 5 个未引用的类型: 库存原始属性 库存原料 关键点 显示名称
您需要在源代码文件中添加 using
命名空间指令或使用命名空间完全限定类型。
示例:
using PX.Objects.IN;
[InventoryRaw]
[PX.Objects.IN.InventoryRaw]
编辑:
删除部署到 App_RuntimeCode 文件夹的延迟文件。 首先检查App_RuntimeCode文件夹下的目标IIS虚拟目录下的web服务器文件系统中是否有源代码文件。
然后对于 Acumatica 网站的每个租户,检查从代码和数据访问部分部署的自定义项目。