IT:AD:K2/Issues/Attaching Assemblies
Situation
- Create a Workflow
- Attach Reference
- By Default
Copy Localis selected (there is no way to unset this first. - This means the Referenced dll is copied to the K2 project's BIN directory.
- Will get deployed with Process and unpacked in a temp dir:
\K2 blackpearl\Host Server\bin\Work\Procxxx\- If
Copy Localis not set, the dll's will not be deployed, and they need to be copied to the K2 Server's GAC.
Other facts to know:
- Tmp directories are deleted every time K2 server is restarted.
- Assemblies are looked for (in order)
- in GAC,
- \K2 blackpearl\Host Server\bin
- \K2 blackpearl\Host Server\bin\Work\Procxxx\
Situation
Not copying over files.
Solution
That's because …K2 sucks.
In the IDE, you point to a Dll, it says it remembers the path, but if you look at the *.kprx file, you'll see it's lying. It's remembering the Bin path it moved it too.
<Process Type="SourceCode.Workflow.Design.DefaultProcess" Assembly="SourceCode.Workflow.Authoring, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d" Version="4">
<References>
<AssemblyReference><Guid>d317b10063a441d6b9f31b9e1356712c</Guid><ItemName>Reference</ItemName><ItemInclude>System</ItemInclude><AssemblyName>System</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>18b1e23a6f474d789050467c7e8f92d1</Guid><ItemName>Reference</ItemName><ItemInclude>System.Drawing</ItemInclude><AssemblyName>System.Drawing</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>0741368368644fd4aa0592156bda3ad8</Guid><ItemName>Reference</ItemName><ItemInclude>System.Windows.Forms</ItemInclude><AssemblyName>System.Windows.Forms</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>8aaa84e077094a05b9cd3196e876efea</Guid><ItemName>Reference</ItemName><ItemInclude>System.Data</ItemInclude><AssemblyName>System.Data</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>7d16a0e4a0b74eabbb6280f6d3b51627</Guid><ItemName>Reference</ItemName><ItemInclude>System.Xml</ItemInclude><AssemblyName>System.Xml</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>15e4080499c640008c6cef48ddbf65d2</Guid><ItemName>Reference</ItemName><ItemInclude>System.Design</ItemInclude><AssemblyName>System.Design</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>cacf37a068414ec3b3cfee81f8126baa</Guid><ItemName>Reference</ItemName><ItemInclude>System.Web</ItemInclude><AssemblyName>System.Web</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>c01b9ec78e09459ea7e26b3841de3916</Guid><ItemName>Reference</ItemName><ItemInclude>System.Web.Services</ItemInclude><AssemblyName>System.Web.Services</AssemblyReference>
<AssemblyReference><Guid>279bb0ca58874d6ebd859e10e94c460d</Guid><ItemName>Reference</ItemName><ItemInclude>System.Transactions</ItemInclude><AssemblyName>System.Transactions</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>67edf19fba204aa88f963c0727ee78ec</Guid><ItemName>Reference</ItemName><ItemInclude>System.Drawing.Design</ItemInclude><AssemblyName>System.Drawing.Design</AssemblyName></AssemblyReference><AssemblyReference><Guid>e618d4ee64a84cb2a611dd25bc7ea043</Guid><ItemName>Reference</ItemName><ItemInclude>SourceCode.Workflow.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d</ItemInclude><CopyLocal>0</CopyLocal><AssemblyName>SourceCode.Workflow.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>2fccdc0de65e4f4cb97e892f236eadca</Guid><ItemName>Reference</ItemName><ItemInclude>SourceCode.ResolverFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d</ItemInclude><CopyLocal>0</CopyLocal><AssemblyName>SourceCode.ResolverFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>bd327fd48cc8411a836ef5ac69dd2104</Guid><ItemName>Reference</ItemName><ItemInclude>KO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d</ItemInclude><CopyLocal>0</CopyLocal><AssemblyName>KO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d</AssemblyName><Path>..\..\..\..\..\Program Files (x86)\K2 blackpearl\bin\KO.dll</Path></AssemblyReference>
<AssemblyReference><Guid>6790b68f8ef949a1a6f030979c3a84c7</Guid><ItemName>Reference</ItemName><ItemInclude>System.Core</ItemInclude><AssemblyName>System.Core</AssemblyName><RequiredFramework>3.5</RequiredFramework></AssemblyReference>
<AssemblyReference><Guid>1a3bbba4ae3b4f59bb5c021689f9bf18</Guid><ItemName>Reference</ItemName><ItemInclude>System.Xml.Linq</ItemInclude><AssemblyName>System.Xml.Linq</AssemblyName><RequiredFramework>3.5</RequiredFramework></AssemblyReference>
<AssemblyReference><Guid>05367dbef98940faa76170e13f053063</Guid><ItemName>Reference</ItemName><ItemInclude>System.ServiceModel</ItemInclude><AssemblyName>System.ServiceModel</AssemblyName></AssemblyReference>
<AssemblyReference><Guid>6ef8717fdf00409dbe5b2072e3773f75</Guid><ItemName>Reference</ItemName><ItemInclude>XAct.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f1417dfe4ed073e</ItemInclude><AssemblyName>XAct.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f1417dfe4ed073e</AssemblyName><Path>bin\XAct.Core.dll</Path></AssemblyReference>
</References>
What's a bit interesting is the CopyLocal Attribute…which it's not listening to.
Even if attached carefully to try to leave it in the source bin, it still says /bin/ and forgets the original path:
<AssemblyReference><Guid>62d5b4e6e85147a498de67edeb63b9ac</Guid><ItemName>Reference</ItemName><ItemInclude>XAct.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f1417dfe4ed073e</ItemInclude><CopyLocal>0</CopyLocal><AssemblyName>XAct.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f1417dfe4ed073e</AssemblyName><Path>bin\XAct.Core.dll</Path></AssemblyReference></References>