我有一個包含有.csproj的文件中像這樣的控制檯應用程序的解決方案:.NET核心的MSBuild ProjectReference
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
</Project>
我也有使用控制檯應用程序生成的C#堆庫項目編譯到庫中的代碼,庫.csproj文件看起來像這樣。
<Project Sdk="Microsoft.NET.Sdk" InitialTargets="RunGenerator">
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="../generator/generator.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Target Name="RunGenerator">
<Exec Command="dotnet run -p "../generator/generator.csproj" input output" />
</Target>
</Project>
這會失敗,因爲依賴性分析說netstandard1.4程序集無法引用netcoreapp1.1程序集。除了我沒有引用程序集外,這是正確的。
我可以解決這個問題通過建立發電項目是這樣的:
<Project Sdk="Microsoft.NET.Sdk" InitialTargets="RunGenerator">
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework>
</PropertyGroup>
<Target Name="RunGenerator">
<Exec Command="dotnet build "../generator/generator.csproj"" />
<Exec Command="dotnet run -p "../generator/generator.csproj" input output" />
</Target>
</Project>
的問題是,發電機項目中使用的溶液含有文件不再參與在相關性分析時,這些項目的建成並且生成器項目的顯式構建有時可以與解決方案構建啓動的同一項目的另一個構建同時運行,並且這會導致錯誤,因爲文件被鎖定等。
是否可能在不檢查目標的情況下產生項目依賴關係框架?
任何人都可以提出一個解決辦法?
謝謝。