Das Projekt das ich kompilieren will, kompiliert mit VS2017 (devenv.exe) einwandfrei.
Das Projekt soll aber online mit Azure Devops und einem msbuild kompiliert werden.
Um lokal die Fehler, die online auftreten nachzuvollziehen, konnte ich mir bisher so behelfen.
Wenn ich aber versuche mit folgendem script lokal zu kompilieren
(ich befinde mich in dem Ordner in der Command-Line, wo sich auch die sln befindet):
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" "Projectname.sln" /nologo /nr:false /fl /flp:"logfile=Projectname.sln.log;verbosity=diagnostic" /t:restore /t:compile /p:NoWarn=MC3072 /p:Config=debug /nologo /nr:false
(Das Projekt soll aber online mit Azure Devops und einem msbuild kompiliert werden.
Um lokal die Fehler, die online auftreten nachzuvollziehen, konnte ich mir bisher so behelfen.)
Das wird zwar eigentlich auch alles ausgeführt, nur bekomme ich eben für die XAML Properties in diesem Projekt Fehler.
u.a.:
"C:\Sources\Blub\ProjectName.sln" (restore;compile Ziel) (1) ->
"C:\Sources\Blub\Blub.Management.Handler.Error\Blub.Management.Handler.Error.csproj" (compile Ziel) (13:6) ->
(CoreCompile Ziel) ->
Views\ErrorView.xaml.cs(12,13): error CS0103: Der Name "InitializeComponent" ist im aktuellen Kontext nicht vorhanden. [C:\Sources\Blub\Blub.Management.Handler.Error\Blub.Management.Handler.Error.csproj]
Die XAML Dateien erstelle ich nicht selbst.
Es sieht einfach so aus, als ob mir ein Schalter fehlt, um die Referenzen die die XAML Files enthalten aufzulösen, was ja Devenv.exe anscheinend offensichtlich "von alleine" macht.
Weiss jemand was für einen Schalter ich da bei msbuild.exe noch angeben kann?
P.S.: Würde nicht hier posten, wenn ich nicht schon fast 2 Tage nach der Problemlösung online gesucht hätte + stundenlanges probieren. Vielleicht ist ja die Lösung ganz einfach?
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Ich würde vermuten, dass die x:Class="..." Angabe im XAML dieser View ggf. falsch ist aus welchen Gründen auch immer.
Zumindest würde ich zunächst definitiv versuchen auszuschließen, dass es sich um keinen Fehler im Code handelt den Visual Studio hier ignoriert oder nicht beachtet.
using System.Windows.Controls;
namespace xxxxxxxxxxxxxxxx.Maintenance.Views
{
/// <summary>
/// Interaction logic for ViewA.xaml
/// </summary>
public partial class ViewA : UserControl
{
public ViewA()
{
this.InitializeComponent();
}
}
}
Hinweis: Das ist die View.xaml.cs Datei
Es sind 4 Komponenten die so aussehen und er versucht das bei jeder von denen.
Die ViewA selbst sieht so aus:
<UserControl x:Class="xxxxxxxxxxxxxxxx.Maintenance.Views.ViewA"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:xxxxxxxxxxxxxxxx..Maintenance.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True" >
<Grid>
<TextBlock Text="{Binding Message}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</UserControl>
EDIT: Fehlermeldung nochmal hier angehängt:
Fehlermeldung:
"C:\Sources\Blub\ProjectName.sln" (restore;compile Ziel) (1) ->
"C:\Sources\Blub\Blub.Management.Handler.Error\Blub.Management.Handler.Error.csproj" (compile Ziel) (13:6) ->
(CoreCompile Ziel) ->
Views\ErrorView.xaml.cs(12,13): error CS0103: Der Name "InitializeComponent" ist im aktuellen Kontext nicht vorhanden. [C:\Sources\Blub\Blub.Management.Handler.Error\Blub.Management.Handler.Error.csproj]
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Guten Morgen,
Das Tooling generiert für XAML-Dateien C#-Code, wo u. a. die InitializeComponent
-Methode enthalten ist. Das passiert in zusätzlichen MSBuild-Targets, die für die jeweiligen Projekttypen definiert sind. Wenn Du nur den Compile
-Target laufen lässt, werden diese Targets nicht ausgeführt und die generierten Dateien werden nicht zur Liste von zu kompilierenden Dateien hinzugefügt (und vermutlich auch nicht generiert). Führe den Build
-Target aus, dann wird auch alles korrekt generiert und dem Compiler übergeben. Du kannst diese Targets auch selbst ausführen, aber dazu müsstest Du wissen, wie sie heißen und in welcher Reihenfolge sie ausgeführt werden müssen.
Grüße
Danke Lando.
Ich stimme Dir zu.
Mit dieser Codezeile hat es dann funktioniert:
cd ..
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" "ProjectName.sln" /t:restore /t:build /nologo /nr:false /flp:"logfile=ProjectName.sln.log;verbosity=diagnostic"
set /p DUMMY=Hit ENTER to continue...
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.