I am writing a NAnt script for a scripted build of a VS solution. It is three DLLs compiled with /clr, one written in C# and two C++. The main dll, a C++ project, references the other two DLLs which are strong-named and placed in the GAC by a merge module. I cannot use <solution> due to dependencies being unresolved (and a desire to get away from .sln files).
What occurs is the csharp.dll is added to MsiAssembly and MsiAssemblyName tables in the msm file with proper entries, but the cplusplus.dll file does not. When I manually enter information into these tables the cplusplus.dll is added to the GAC as appropriate. It is interesting to note that the cplusplus.dll is not versioned, and I have tried using AssemblyInfo attributes and linking with /version. When the manually modified msm file is installed, the GAC gets the version of cplusplus.dll as 1.0.* (one revision less than the csharp.dll, i.e. 1.0.2537.17748 if the other is 1.0.2537.17749). Below is my msm block. What is the criteria for a file to be added to the MsiAssembly table? Also, it was necessary for me to remove the AgreementText control, as it was thrown in by default and made the msm file fail "Merge Module Validation Suite" in Orca. Any tips, pointers, thoughts, solutions? <target name="gacmsm" verbose="true"> <msm id="MergeModule.##########################" version="1.0" output="${mergeMod}" sourcedir="${jniTempDir}" verbose="true"> <summaryinformation> <title>title</title> <subject>DLL assemblies</subject> <author>author</author> <comments>This merge module GACs the fingerprint DLLs 'csharp.dll' and 'cplusplus.dll'</comments> </summaryinformation> <components> <component name="C_cplusplus" id="{########-####-#########-############}" attr="0" directory="TARGETDIR" feature="F_GACDLLs" installassembliestogac="true" > <key file="cplusplus.dll"/> <fileset basedir="${jniTempDir}"> <include name="cplusplus.dll" /> </fileset> <!--<forceid file="cplusplus.dll" id="_cplusplusfileguid" version="1.0.300.7890" language="0" installtogac="true"/> this line makes no difference whether it is added to the tables, and it seems the version only defines the reference to the GAC entry for uninstall --> </component> <component name="C_csharpdll" id="{########-####-#########-############}" attr="0" directory="TARGETDIR" feature="F_GACDLLs" installassembliestogac="true" > <key file="csharp.dll"/> <fileset basedir="${jniTempDir}"> <include name="csharp.dll"/> </fileset> </component> </components> <controls> <control name="AgreementText" dialog="LicenseAgreementDlg" type="ScrollableText" x="20" y="60" width="330" height="120" attr="7" remove="true"/> </controls> </msm> </target> -- View this message in context: http://www.nabble.com/NantContrib-MSM-Task-not-fully-populating-MsiAssembly-table-tf3488663.html#a9742056 Sent from the NAnt - Users mailing list archive at Nabble.com. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users