Fix code for building with corefx
authorWonYoung Choi <wy80.choi@samsung.com>
Thu, 28 Jul 2016 09:45:28 +0000 (18:45 +0900)
committerWonYoung Choi <wy80.choi@samsung.com>
Tue, 16 Aug 2016 11:27:52 +0000 (20:27 +0900)
Change-Id: Ie3f38bdf7bd8f2f23bd8c8ebef85906194a0d9cc
Signed-off-by: WonYoung Choi <wy80.choi@samsung.com>
Tizen.Network.IoTConnectivity/CoreFx.References.targets [new file with mode: 0644]
Tizen.Network.IoTConnectivity/Tizen.Network.IoTConnectivity.csproj
Tizen.Network.IoTConnectivity/Tizen.Network.IoTConnectivity/IoTConnectivityClientManager.cs
Tizen.Network.IoTConnectivity/Tizen.Network.IoTConnectivity/RemoteResource.cs
Tizen.Network.IoTConnectivity/Tizen.Network.IoTConnectivity/Representation.cs
Tizen.Network.IoTConnectivity/Tizen.Network.IoTConnectivity/Resource.cs
Tizen.Network.IoTConnectivity/Tizen.Network.IoTConnectivity/ResourceQuery.cs
packaging/csapi-network-iotconnectivity.spec

diff --git a/Tizen.Network.IoTConnectivity/CoreFx.References.targets b/Tizen.Network.IoTConnectivity/CoreFx.References.targets
new file mode 100644 (file)
index 0000000..dab29ec
--- /dev/null
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Condition=" '$(CoreFxPath)' != '' ">
+     <Reference Include="Microsoft.Win32.Primitives">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/Microsoft.Win32.Primitives.dll</HintPath>
+    </Reference>
+    <Reference Include="System.AppContext">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.AppContext.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Collections.Concurrent">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Collections.Concurrent.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Collections">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Collections.dll</HintPath>
+    </Reference>
+    <Reference Include="System.ComponentModel.Annotations">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.ComponentModel.Annotations.dll</HintPath>
+    </Reference>
+    <Reference Include="System.ComponentModel">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.ComponentModel.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Console">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Console.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Diagnostics.Debug">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Diagnostics.Debug.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Diagnostics.Process">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Diagnostics.Process.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Diagnostics.Tools">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Diagnostics.Tools.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Diagnostics.TraceSource">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Diagnostics.TraceSource.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Diagnostics.Tracing">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Diagnostics.Tracing.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Dynamic.Runtime">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Dynamic.Runtime.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Globalization.Calendars">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Globalization.Calendars.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Globalization">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Globalization.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Globalization.Extensions">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Globalization.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO.Compression">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.Compression.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO.Compression.ZipFile">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.Compression.ZipFile.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO.FileSystem">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.FileSystem.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO.FileSystem.Primitives">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.FileSystem.Primitives.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO.FileSystem.Watcher">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.FileSystem.Watcher.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO.MemoryMappedFiles">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.MemoryMappedFiles.dll</HintPath>
+    </Reference>
+    <Reference Include="System.IO.UnmanagedMemoryStream">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.IO.UnmanagedMemoryStream.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Linq">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Linq.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Linq.Expressions">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Linq.Expressions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Linq.Parallel">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Linq.Parallel.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Linq.Queryable">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Linq.Queryable.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Http">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Net.Http.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.NameResolution">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Net.NameResolution.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Primitives">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Net.Primitives.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Requests">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Net.Requests.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Security">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Net.Security.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Sockets">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Net.Sockets.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.WebHeaderCollection">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Net.WebHeaderCollection.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Numerics.Vectors">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Numerics.Vectors.dll</HintPath>
+    </Reference>
+    <Reference Include="System.ObjectModel">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.ObjectModel.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reflection.DispatchProxy">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Reflection.DispatchProxy.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reflection">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Reflection.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reflection.Extensions">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Reflection.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reflection.Primitives">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Reflection.Primitives.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reflection.TypeExtensions">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Reflection.TypeExtensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Resources.ResourceManager">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Resources.ResourceManager.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Runtime.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Extensions">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Runtime.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Handles">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Runtime.Handles.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.InteropServices">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Runtime.InteropServices.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.InteropServices.RuntimeInformation">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Loader">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Runtime.Loader.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Numerics">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Runtime.Numerics.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Security.Cryptography.Algorithms">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Security.Cryptography.Algorithms.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Security.Cryptography.Encoding">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Security.Cryptography.Encoding.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Security.Cryptography.Primitives">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Security.Cryptography.Primitives.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Security.Cryptography.X509Certificates">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Security.Cryptography.X509Certificates.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Text.Encoding">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Text.Encoding.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Text.Encoding.Extensions">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Text.Encoding.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Text.RegularExpressions">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Text.RegularExpressions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Threading">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Threading.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Threading.Tasks">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Threading.Tasks.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Threading.Tasks.Parallel">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Threading.Tasks.Parallel.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Threading.Thread">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Threading.Thread.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Threading.ThreadPool">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Threading.ThreadPool.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Threading.Timer">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Threading.Timer.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.ReaderWriter">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Xml.ReaderWriter.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.XDocument">
+      <Private>False</Private>
+      <HintPath>$(CoreFxPath)/System.Xml.XDocument.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index 86d261a..0eb151d 100644 (file)
@@ -38,7 +38,8 @@
   <PropertyGroup>
     <AssemblyOriginatorKeyFile>Tizen.Network.IoTConnectivity.snk</AssemblyOriginatorKeyFile>
   </PropertyGroup>
-  <ItemGroup>
+  <Import Project="CoreFx.References.targets" />
+  <ItemGroup Condition=" '$(CoreFxPath)' == '' ">
     <Reference Include="System" />
     <Reference Include="System.Core" />
     <Reference Include="System.Xml.Linq" />
index 846df77..dabec52 100755 (executable)
@@ -714,8 +714,8 @@ namespace Tizen.Network.IoTConnectivity
             PresenceReceivedEventArgs e = new PresenceReceivedEventArgs()
             {
                 PresenceId = presenceId,
-                HostAddress = Marshal.PtrToStringAuto(host),
-                Type = Marshal.PtrToStringAuto(type),
+                HostAddress = Marshal.PtrToStringAnsi(host),
+                Type = Marshal.PtrToStringAnsi(type),
                 EventType = (PresenceEventType)trigger
             };
 
@@ -757,10 +757,10 @@ namespace Tizen.Network.IoTConnectivity
             DeviceInformationFoundEventArgs e = new DeviceInformationFoundEventArgs()
             {
                 RequestId = requestId,
-                Name = Marshal.PtrToStringAuto(name),
-                SpecVersion = Marshal.PtrToStringAuto(specVersion),
-                DeviceId = Marshal.PtrToStringAuto(deviceId),
-                DataModelVersion = Marshal.PtrToStringAuto(dataModelVersion)
+                Name = Marshal.PtrToStringAnsi(name),
+                SpecVersion = Marshal.PtrToStringAnsi(specVersion),
+                DeviceId = Marshal.PtrToStringAnsi(deviceId),
+                DataModelVersion = Marshal.PtrToStringAnsi(dataModelVersion)
             };
 
             return e;
@@ -850,17 +850,17 @@ namespace Tizen.Network.IoTConnectivity
             PlatformInformationFoundEventArgs e = new PlatformInformationFoundEventArgs()
             {
                 RequestId = requestId,
-                PlatformId = (platformId != IntPtr.Zero) ? Marshal.PtrToStringAuto(platformId) : string.Empty,
-                ManufacturerName = (manufacturerName != IntPtr.Zero) ? Marshal.PtrToStringAuto(manufacturerName) : string.Empty,
-                ManufacturerURL = (manufacturerUrl != IntPtr.Zero) ? Marshal.PtrToStringAuto(manufacturerUrl) : string.Empty,
-                DateOfManufacture = (dateOfManufacture != IntPtr.Zero) ? Marshal.PtrToStringAuto(dateOfManufacture) : string.Empty,
-                ModelNumber = (modelNumber != IntPtr.Zero) ? Marshal.PtrToStringAuto(modelNumber) : string.Empty,
-                PlatformVersion = (platformVersion != IntPtr.Zero) ? Marshal.PtrToStringAuto(platformVersion) : string.Empty,
-                OsVersion = (osVersion != IntPtr.Zero) ? Marshal.PtrToStringAuto(osVersion) : string.Empty,
-                HardwareVersion = (hardwareVersion != IntPtr.Zero) ? Marshal.PtrToStringAuto(hardwareVersion) : string.Empty,
-                FirmwareVersion = (firmwareVersion != IntPtr.Zero) ? Marshal.PtrToStringAuto(firmwareVersion) : string.Empty,
-                SupportUrl = (supportUrl != IntPtr.Zero) ? Marshal.PtrToStringAuto(supportUrl) : string.Empty,
-                SystemTime = (systemTime != IntPtr.Zero) ? Marshal.PtrToStringAuto(systemTime) : string.Empty
+                PlatformId = (platformId != IntPtr.Zero) ? Marshal.PtrToStringAnsi(platformId) : string.Empty,
+                ManufacturerName = (manufacturerName != IntPtr.Zero) ? Marshal.PtrToStringAnsi(manufacturerName) : string.Empty,
+                ManufacturerURL = (manufacturerUrl != IntPtr.Zero) ? Marshal.PtrToStringAnsi(manufacturerUrl) : string.Empty,
+                DateOfManufacture = (dateOfManufacture != IntPtr.Zero) ? Marshal.PtrToStringAnsi(dateOfManufacture) : string.Empty,
+                ModelNumber = (modelNumber != IntPtr.Zero) ? Marshal.PtrToStringAnsi(modelNumber) : string.Empty,
+                PlatformVersion = (platformVersion != IntPtr.Zero) ? Marshal.PtrToStringAnsi(platformVersion) : string.Empty,
+                OsVersion = (osVersion != IntPtr.Zero) ? Marshal.PtrToStringAnsi(osVersion) : string.Empty,
+                HardwareVersion = (hardwareVersion != IntPtr.Zero) ? Marshal.PtrToStringAnsi(hardwareVersion) : string.Empty,
+                FirmwareVersion = (firmwareVersion != IntPtr.Zero) ? Marshal.PtrToStringAnsi(firmwareVersion) : string.Empty,
+                SupportUrl = (supportUrl != IntPtr.Zero) ? Marshal.PtrToStringAnsi(supportUrl) : string.Empty,
+                SystemTime = (systemTime != IntPtr.Zero) ? Marshal.PtrToStringAnsi(systemTime) : string.Empty
             };
 
             return e;
index c861155..ecbdb36 100755 (executable)
@@ -716,7 +716,7 @@ namespace Tizen.Network.IoTConnectivity
                 Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to get device name of remote resource");
                 throw IoTConnectivityErrorFactory.GetException(ret);
             }
-            DeviceName = Marshal.PtrToStringAuto(deviceName);*/
+            DeviceName = Marshal.PtrToStringAnsi(deviceName);*/
         }
 
         private void SetRemoteResource()
@@ -773,10 +773,10 @@ namespace Tizen.Network.IoTConnectivity
                 Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to get device name of remote resource");
                 throw IoTConnectivityErrorFactory.GetException(ret);
             }
-            DeviceName = Marshal.PtrToStringAuto(deviceName);
-            DeviceId = Marshal.PtrToStringAuto(deviceIdPtr);
-            HostAddress = Marshal.PtrToStringAuto(hostAddressPtr);
-            UriPath = Marshal.PtrToStringAuto(uriPathPtr);
+            DeviceName = Marshal.PtrToStringAnsi(deviceName);
+            DeviceId = Marshal.PtrToStringAnsi(deviceIdPtr);
+            HostAddress = Marshal.PtrToStringAnsi(hostAddressPtr);
+            UriPath = Marshal.PtrToStringAnsi(uriPathPtr);
             Types = new ResourceTypes(typesHandle);
             Interfaces = new ResourceInterfaces(interfacesHandle);
             Policy = (ResourcePolicy)policy;
index 52c5c29..fc5f1d4 100755 (executable)
@@ -90,7 +90,7 @@ namespace Tizen.Network.IoTConnectivity
                     Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to Get uri");
                     throw IoTConnectivityErrorFactory.GetException(ret);
                 }
-                return Marshal.PtrToStringAuto(path);
+                return Marshal.PtrToStringAnsi(path);
             }
             set
             {
index aeeefdd..2e96776 100755 (executable)
@@ -429,7 +429,7 @@ namespace Tizen.Network.IoTConnectivity
 
             return new Request()
             {
-                HostAddress = Marshal.PtrToStringAuto(hostAddressPtr),
+                HostAddress = Marshal.PtrToStringAnsi(hostAddressPtr),
                 Options = opts,
                 Query = query,
                 Representation = representation
index afc3843..e672c85 100755 (executable)
@@ -91,7 +91,7 @@ namespace Tizen.Network.IoTConnectivity
                     Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to get type");
                     throw IoTConnectivityErrorFactory.GetException(ret);
                 }
-                return Marshal.PtrToStringAuto(type);
+                return Marshal.PtrToStringAnsi(type);
             }
             set
             {
@@ -128,7 +128,7 @@ namespace Tizen.Network.IoTConnectivity
                     Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to get interface");
                     throw IoTConnectivityErrorFactory.GetException(ret);
                 }
-                return Marshal.PtrToStringAuto(iface);
+                return Marshal.PtrToStringAnsi(iface);
             }
             set
             {
index 7a19fe4..1d8a412 100755 (executable)
@@ -1,4 +1,5 @@
 %{!?dotnet_assembly_path: %define dotnet_assembly_path %{_datadir}/assembly}
+%{!?dotnet_core_path: %define dotnet_core_path %{_datadir}/tizen.net/ref}
 
 %if 0%{?tizen_build_devel_mode}
 %define BUILDCONF Debug
@@ -20,15 +21,12 @@ Source1:    %{name}.manifest
 BuildRequires: mono-compiler
 BuildRequires: mono-devel
 
+# .NETCore
 %if 0%{?_with_corefx}
 AutoReqProv: no
 BuildRequires: corefx-managed-32b-ref
 %endif
 
-# P/Invoke Build Requires
-BuildRequires: pkgconfig(glib-2.0)
-BuildRequires: pkgconfig(iotcon)
-
 # C# API Requires
 BuildRequires: csapi-tizen
 
@@ -44,12 +42,17 @@ cp %{SOURCE1} .
 %build
 for ASM in %{Assemblies}; do
 xbuild $ASM/$ASM.csproj \
+%if 0%{?_with_corefx}
+        /p:NoStdLib=True \
+        /p:TargetFrameworkVersion=v5.0 \
+        /p:AddAdditionalExplicitAssemblyReferences=False \
+        /p:CoreFxPath=%{dotnet_core_path} \
+%endif
         /p:Configuration=%{BUILDCONF} \
         /p:ReferencePath=%{dotnet_assembly_path}
 done
 
 %install
-# Assemblies
 mkdir -p %{buildroot}%{dotnet_assembly_path}
 for ASM in %{Assemblies}; do
 install -p -m 644 $ASM/bin/%{BUILDCONF}/$ASM.dll %{buildroot}%{dotnet_assembly_path}
@@ -57,6 +60,5 @@ done
 
 %files
 %manifest %{name}.manifest
-%attr(644,root,root) %{dotnet_assembly_path}/*.dll
 %license LICENSE
-
+%attr(644,root,root) %{dotnet_assembly_path}/*.dll