Tengo un problema al tratar de compilar mi .netcore3.1 después de actualizar el SDK a la vista previa de .NET 6.0 durante la depuración a través de Visual Studio.
Mi CSProject está abajo:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <UserSecretsId>f5884bc9-1eeb-1458-bba9-832ed8f4cd4e</UserSecretsId> </Project>mi dotnet sdk instalado:
.NET SDK (reflecting any global.json): Version: 6.0.100-preview.5.21302.13 Commit: d6380bcae7 Runtime Environment: OS Name: Windows OS Version: 10.0.18363 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\6.0.100-preview.5.21302.13\ Host (useful for support): Version: 6.0.0-preview.5.21301.5 Commit: ec3e0b276b .NET SDKs installed: 1.1.14 [C:\Program Files\dotnet\sdk] 2.1.519 [C:\Program Files\dotnet\sdk] 2.2.104 [C:\Program Files\dotnet\sdk] 3.0.103 [C:\Program Files\dotnet\sdk] 3.1.300 [C:\Program Files\dotnet\sdk] 5.0.301 [C:\Program Files\dotnet\sdk] 6.0.100-preview.5.21302.13 [C:\Program Files\dotnet\sdk]error de mensajes :
El proyecto al que se hace referencia es un ejecutable no autónomo. Un ejecutable no autónomo no puede ser referenciado por un ejecutable autónomo.
De acuerdo con la documentación , su configuración nunca funcionó, pero solo lo descubriría al intentar ejecutar la aplicación de referencia:
En versiones anteriores de .NET SDK, podía hacer referencia a un proyecto ejecutable autónomo desde un proyecto ejecutable no autónomo sin un error de compilación. Sin embargo, ambas aplicaciones no serían ejecutables. A partir de .NET SDK 5, se genera un error si un proyecto ejecutable hace referencia a otro proyecto ejecutable y los valores autónomos no coinciden.
Ahora, obtiene el error en el momento de la compilación, para que sepa que necesita corregir un proyecto u otro para que su "autocontención" coincida.
Tenga en cuenta que si está seguro de que desea mezclar los valores SelfContained a pesar de los problemas potenciales, puede deshabilitar la verificación de esa condición agregando <ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained> al archivo .csproj.
Tengo el mismo problema con .net 3.1 y no con SDK5. Creo que han arreglado algo ya que mi aplicación funcionaba bastante bien en producción y prueba, y ahora se queja de esto.
Actualicé la configuración de publicación para que dependa del marco y ahora funciona como se esperaba. Visual Studio acaba de comenzar a construir cuando guardo archivos, lo que nunca solía hacer. Tal vez una actualización de VS, ya que las hago automáticamente.
Para solucionar esto, todos los proyectos a los que se hace referencia deben ser autónomos y eliminar la etiqueta de Plataformas de todos los proyectos. Haga clic en cada proyecto de su solución y asegúrese de que los archivos *.csporoj tengan la siguiente configuración.
Común.csproj
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> <SelfContained>true</SelfContained> </PropertyGroup>Aplicación.csproj
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> <SelfContained>true</SelfContained> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\Common\Common.csproj" /> <ProjectReference Include="..\AppWorker\AppWorker.csproj"> <CopyLocal>True</CopyLocal> <CopyLocalSatelliteAssemblies>True</CopyLocalSatelliteAssemblies> </ProjectReference> </ItemGroup>AppWorker.csproj
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> <SelfContained>true</SelfContained> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\Common\Common.csproj" /> </ItemGroup>También un paso importante, al realizar la operación de publicación, asegúrese de seleccionar Release-AnyCPU . Por alguna razón, las otras opciones hacen que la publicación falle y muestre un error de configuración incorrecto en la barra de herramientas.