diff --git a/etc/schema/dotnet-slnx.rnc b/etc/schema/dotnet-slnx.rnc
new file mode 100644
index 00000000000..2e081ed39fd
--- /dev/null
+++ b/etc/schema/dotnet-slnx.rnc
@@ -0,0 +1,74 @@
+default namespace = ""
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns_1 = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace rng = "http://relaxng.org/ns/structure/1.0"
+
+start |= starting_Solution
+starting_Solution =
+ element Solution {
+ (element Configurations { Configurations }?
+ | element Project { Project }*
+ | element Folder { Folder }*
+ | PropertiesGroup*)*,
+ attribute Description { xsd:string }?,
+ attribute Version { xsd:string }?
+ }
+Configurations =
+ (element BuildType {
+ attribute Name { xsd:string }
+ }*
+ | element Platform {
+ attribute Name { xsd:string }
+ }*
+ | element ProjectType { ProjectType }*)*
+ProjectType =
+ (ConfigurationRulesGroup*)*,
+ attribute TypeId { xsd:string }?,
+ attribute Name { xsd:string }?,
+ attribute Extension { xsd:string }?,
+ attribute BasedOn { xsd:string }?,
+ [ ns_1:defaultValue = "true" ] attribute IsBuildable { xsd:boolean }?,
+ [ ns_1:defaultValue = "true" ]
+ attribute SupportsPlatform { xsd:boolean }?
+Folder =
+ (element File {
+ attribute Path { xsd:string }
+ }*
+ | element Project { Project }*
+ | PropertiesGroup*)*,
+ attribute Name { xsd:string }
+Project =
+ (element BuildDependency {
+ attribute Project { text }
+ }*
+ | ConfigurationRulesGroup*
+ | PropertiesGroup*)*,
+ attribute Path { xsd:string },
+ attribute Type { xsd:string }?,
+ attribute DisplayName { xsd:string }?
+PropertiesGroup =
+ element Properties {
+ element Property {
+ attribute Name { xsd:string },
+ attribute Value { xsd:string }?
+ }*,
+ attribute Name { text },
+ attribute Scope { text }?
+ }
+ConfigurationRulesGroup =
+ element BuildType {
+ attribute Solution { xsd:string }?,
+ attribute Project { xsd:string }?
+ }+
+ | element Platform {
+ attribute Solution { xsd:string }?,
+ attribute Project { xsd:string }
+ }+
+ | element Build {
+ attribute Solution { xsd:string }?,
+ attribute Project { xsd:string }?
+ }+
+ | element Deploy {
+ attribute Solution { xsd:string }?,
+ attribute Project { xsd:string }?
+ }+
diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml
index 18af8ccf4af..6701b9b56a6 100644
--- a/etc/schema/schemas.xml
+++ b/etc/schema/schemas.xml
@@ -93,4 +93,7 @@ along with GNU Emacs. If not, see . -->
+
+
+
diff --git a/lisp/files.el b/lisp/files.el
index bd229673d8d..8cfbdc79bf0 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3158,6 +3158,7 @@ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|CBR\\|7Z\\|SQUASHFS\\)\\'" .
("\\.oak\\'" . scheme-mode)
("\\.sgml?\\'" . sgml-mode)
("\\.x[ms]l\\'" . xml-mode)
+ ("\\.slnx\\'" . xml-mode)
("\\.dbk\\'" . xml-mode)
("\\.dtd\\'" . sgml-mode)
("\\.ds\\(ss\\)?l\\'" . dsssl-mode)