diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index 10d50fa..0c77aaa 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -649,7 +649,8 @@
             base = modpath[-1]
             build_py = self.get_finalized_command('build_py')
             package_dir = os.path.abspath(build_py.get_package_dir(package))
-            return os.path.join(package_dir, base)
+            filename = self.get_ext_filename(ext_name)
+            return os.path.join(package_dir, filename)
         else:
             filename = self.get_ext_filename(ext_name)
             return os.path.join(self.build_lib, filename)
@@ -663,12 +664,11 @@
         else:
             return self.package + '.' + ext_name
 
-    def get_ext_filename (self, ext_name):
+    def get_ext_filename(self, ext_name):
         r"""Convert the name of an extension (eg. "foo.bar") into the name
         of the file from which it will be loaded (eg. "foo/bar.so", or
         "foo\bar.pyd").
         """
-
         from distutils.sysconfig import get_config_var
         ext_path = string.split(ext_name, '.')
         # OS/2 has an 8 character module (extension) limit :-(
diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py
index 7e3f716..f1f80be 100644
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -19,12 +19,6 @@
 # Don't load the xx module more than once.
 ALREADY_TESTED = False
 
-if sys.platform != 'win32':
-    UNDER_MSVC8 = False
-else:
-    from distutils.msvccompiler import get_build_version
-    UNDER_MSVC8 = get_build_version() < 8.0
-
 def _get_source_filename():
     srcdir = sysconfig.get_config_var('srcdir')
     return os.path.join(srcdir, 'Modules', 'xxmodule.c')
@@ -299,7 +293,6 @@
         cmd.run()
         self.assertEquals(cmd.compiler, 'unix')
 
-    @unittest.skipIf(UNDER_MSVC8, 'not running this test for MSVC < 8')
     def test_get_outputs(self):
         tmp_dir = self.mkdtemp()
         c_file = os.path.join(tmp_dir, 'foo.c')
@@ -329,6 +322,8 @@
         finally:
             os.chdir(old_wd)
         self.assert_(os.path.exists(so_file))
+        self.assertEquals(os.path.splitext(so_file)[-1],
+                          sysconfig.get_config_var('SO'))
         so_dir = os.path.dirname(so_file)
         self.assertEquals(so_dir, other_tmp_dir)
 
@@ -336,6 +331,8 @@
         cmd.run()
         so_file = cmd.get_outputs()[0]
         self.assert_(os.path.exists(so_file))
+        self.assertEquals(os.path.splitext(so_file)[-1],
+                          sysconfig.get_config_var('SO'))
         so_dir = os.path.dirname(so_file)
         self.assertEquals(so_dir, cmd.build_lib)
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 82d0e1d..27e4127 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -298,6 +298,9 @@
 Library
 -------
 
+- Issue #6046: Fixed the library extension when distutils build_ext is used
+  inplace. Initial patch by Roumen Petrov.
+
 - Issue #6041: Now distutils `sdist` and `register` commands use `check` as a 
   subcommand.
 
