I am working on a RnD project focused on PDF annotating. Annotation sharing, backup, etc. I have seen this couple of lines in other XFDF creating applications.
<pages>
<defmtx matrix="1.333333,0.000000,0.000000,-1.333333,0.000000,1056.000000" />
</pages>
Can someone please explain what is defined by these lines in an XFDF? Any help is much appreciated.
what is defined by these lines in an XFDF?
Those keys are not in the XFDF specification, so they are not defined and should be ignored.
The data is custom, vendor specific, data that is only meaningful to the vendor that included it, and would be ignored by all other vendors parsing the XFDF.
Related
I've recently looked into a .ssmssqlproj file.
After quick trial/error it turned out, that Name attribute has no effect on the GUI. (btw it renamed after save, so after adding a 4th logical folder to the existing default three, there will be a duplicated in the project file.
<LogicalFolder Name="MiscellaneousTest" Type="3" Sorted="true">
<Items />
</LogicalFolder>
I am trying to give a logical structure within one project, instead of having the 1000 files in a flat structure.
Question
After this "interesting" behaviour, I would take a look to the XML schema of the .ssmssqlproj file.
Googled, and not found maybe I am missing something.
In the WSDL that is generated from a WCF service, there are a few problems that I'd like to take control of a little more. First, is there a way to add annotations to the xsd files generated with the WSDL without using surrogates?
I've taken care of adding annotations to the WSDL itself thanks to the following articles:
http://msdn.microsoft.com/en-us/library/system.servicemodel.description.iwsdlexportextension.aspx"
http://www.codeproject.com/Articles/29980/Exporting-Annotations-from-WCF
I was able to add annotations to data members through agillior, however they used surrogates which I would rather not use.
http://agilior.pt/blogs/bruno.camara/archive/2006/10/01/6.aspx
I would use Thoranin's solution except I want to apply the annotations to data members not parameters
http://thorarin.net/blog/post/2010/08/08/Controlling-WSDL-minOccurs-with-WCF.aspx
Second, I want to explicitly name the namespaces for the xsd files generated from the WSDL. I was able to take control over the namespace of the wsdl using the ServiceBehaviorAttribute: [ServiceBehavior(Namespace="http://mysite.com/HelloWorld")]
but unfortunately I can't find an easy way to specify the namespace of the xsd files :(, is there a simple way to do this/can you point me in the right direction?
-edit-Well I was being silly on the second request. I had forgotten to set the namespaces for my wcf files which is what maps to the xsd namespaces. My bad :) .
Lastly, when the wsdl imports an xsd, it uses a path similar to http://localhost:8080/HostDevServer/HelloWorldService.svc?xsd=xsd0
which seems to break the wsdl2java ant script by apache. I can go in and manually change them to the local files but it's just such a pain :). Is there any way to have the files generated and then have a local reference like:
HelloWorldService.xsd,HelloWorldService1.xsd etc?
Any feedback would be appreciated.
WCFExtras ftw:
I decided that instead of having my own attributes and classes put documentation/annotation into the WSDL and XSD files I would just give into the hype and let WCFExtras take care of it. That being said I do wish that the Xml comments would be split into different lines instead of having them all on the same line. (Just to make reading the xml files easier). Plus WCFExtras takes care of the surrogate problem perfectly :) !
Ended up writing a program to solve the third issue. It pretty much grabs the metadata files using svcutil then goes in and finds all the imports, and reassigns them to the files downloaded based of off the namespaces.
I need to show warning image instead of information image for CancelDlg in wix. I was able to do that by adding the following code:
<String Id="CancelDlgIcon" Overridable="yes" Localizable="yes">WixUI_Ico_Exclam<String>
However I have builds for different languages for e.g. fr-fr, ja-jp, en-us, etc.
Only for en-us it is working fine. For other languages the warning icon is not displayed :(
Can anyone please help me and let me know what changes to make so that it works for all languages (es-es, en-us, fr-fr, ja-jp etc)?
You should author a <String/> element per each localizable string in each *.wxl file and provide the appropriate element value (WixUI_Ico_Exclam in your case). Moreover, you can have different images for different languages, but that would look strange.
Alternatively (and this option is better for this case, IMHO) you can rely on culture groups, which is basically a fallback mechanism for translations. You can specify several *.wxl files to be built into a single MSI package, and in case the phrase is not found in the first file on the line, it will try to find it in the second, and so on. So, for "logically untranslatable" tokens like WixUI_Ico_Exclam you can have it once in the en.wxl, and provide en as a fallback culture to light.exe.
See "Specifying Cultures to Build" topic in WiX.chm for more details.
I'm very new to this so I apologise if my question isn't well structured or just in the wrong place, etc. I've had a good look for solutions to this and tried a number of different approaches but haven't found anything that works so....
I have a solution that makes use of Nhibernate, and consequently must use log4net V1.2.10.0, which comes in the log4net/2.0/ folder. However my solution also links to a number of other solutions, to which I have very limited access. These make use of the same log4net V.1.2.10.0 but in folder: log4net/1.2/
When I run my solution I get this error.
{"Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=e27b8fa57f63a98d' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)":"log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=e27b8fa57f63a98d"}
I have tried to amend the solutions that it is calling, however each time I amend one I get the error within that solution as soon as it tries to use another solution, so I have to amend another and so on. There are simply too many solutions to amend and too many interdepencies with other solutions that I have absolutely no control over for me to be able to change them all so that they use log4net/2.0.
I have found another question ( Referencing 2 different versions of log4net in the same solution ) which I think is basically the same problem, and they amend the app.config with a binding, however I can't seem to get this right, as I'm still getting the same error. The binding I've included in my app.config is this:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="e27b8fa57f63a98d" />
<codeBase version="1.2.10.0" href="2.0\log4net.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821"/>
<codeBase version="1.2.10.0" href="1.2\log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
I'm not sure what the answer to the other question means when it says "You create 2 folder in your project one for each version of log4net. You place each log4net.dll in its corresponding folder by adding an the file to the solution (not with add reference). You can set the copy to output directory property to copy always so that it is automatically copied to the output folder when you build." And would I need to do this to every solution that my solution references?
Ideally I want to be able to make an amendment to my solution which simply means that it doesn't care what log4net any of the solutions are using but they can still pass log messages between each other. I assume this is possible, so any help would be hugely appreciated. Either that or how do I turn off nHibernate's logger so that it doesn't care what log4net I'm using so I can just continue to use the log4net/1.2 that all the other solutions are using. I've tried all sorts of things to turn it off but it still seems to end up trying to find the log4net/2.0.
You're lucky in that you've got the same DLL in two different places, which makes your problem easier to solve. You could simply take a back up and then delete one of the references of the DLL (the \1.2\ version?) and then resolve any broken references in your solution - that should get you to a point that you can compile.
Have you tried NuGet too? You could add a reference to Log4Net and then add a reference to Nhibernate, which would see that you've already satisfied it's dependency requirement and would not need to download another reference to NHibernate.
I'd recommend the learning curve of using NuGet because it is a powerful tool that should make your life much easier in the long run.
Update
Please see my comment about providing your current folder structure to help - incase you can do that; the following should get you started.
To try and do this using just direct file references you may need to move your DLL's around into a better structure. Inside your solution (not project) create the following folder structure under solution items.
\ExternalReferences
\Log4Net\
\NHibernate\
Move a single copy of the log4net DLL inside the log 4 net folder (and delete the other instance) and then move all the NHibernate DLL's you are using (minus Log4Net) in the NHibernate directory. Remove the bindings inside your app.config and then go through each project updating the references to point to the version inside the external references.
The actual location of the files isn't that important, you just need your code to reference a single instance of the DLL and then when it builds they all get copied into the bind folder. You're just running into problems because you have two instances - whilst you are editing your code, etc. NHibernate isn't actually too bothered where Log4Net is; it just has a dependency on it that must be forfilled when it runs.
Update 2
New Version of Log4Net on NuGet that breaks backward compatibility - see the referenced blog post for more info. There is now a 1.2.11.0 version of Log4Net that contains a different strong name to 1.2.10.0, making things just that little harder!
I'm writing a few WiX files today and there's a lot of repetitve typing involved, so it looks to me like Resharper's Live Templates would be very useful here. Does anyone know of any?
I know it's not too hard to write new Live Templates so I may end up answering my own question in a couple of hours, but if anyone can point me to pre-exisitng ones that would be great.
As an aside any other WiX editing tips would be appreciated:-)
I actually only needed a couple of very simple ones...
For creating file components:
<Component Id="C_$COMP_ID$" Guid="$GUID$">
<File Id="F_$FILE_ID$" Name="$FILENAME$" />
</Component>
I wired up $GUID$ to the "generate new guid" macro.
Then an even more simple one for creating directory entries:
<Directory Id="D_$DIR_NAME$" Name="$NAME$" />
The handy thing I found with the Live Templates was the ability to assign one of the fields to the clipboard value, so when adding a new file I could highlight the file's name and ctrl-C it to the clipboard and then run the template, but it only saves an tiny bit of typing.
I'll probably write a few more next time I'm editing WiX files, I'd be happy to share but they are so easy to write and customise to personal preference I'm not sure there's going to be a huge demand:-)
Are you using Votive? because then you get InteliSense when working on wxs.
if you are not using Votive then you can put the Wix XSD into Visual Studio XSD repository to get InteliSense.