Làm cách nào để ngăn chặn các tệp Microsoft.CodeAnalysis được bản địa hóa. *. Resource.dll không được xuất bản bởi ASP.NET Core?


8

Khi tôi xuất bản một dự án ASP.NET Core 3.0, tôi nhận được một vài thư mục được bản địa hóa trong đó 4 tập hợp được hiển thị nằm trong mỗi thư mục này. Tôi không chắc chắn tại sao các thư mục và tập tin được bao gồm. Không có gói nào của tôi tham khảo một CodeAnalysisgói.

Tôi đã thêm <PreserveCompilationContext>false</PreserveCompilationContext>vào tệp csproj nhưng không được. Có cách nào để loại trừ chúng?

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


Này có lẽ điều này có thể giúp bạn stackoverflow.com/a/58298619/9353386
Kinjal Parmar

1
Điều này có trả lời câu hỏi của bạn không? Tại sao Microsoft.CodeAnalysis được xuất bản với trang web ASP.NET Core?
mrmowji

Câu trả lời:


4

Bạn nhận được rất nhiều thư mục ngôn ngữ chứa CodeAnalysis.dllcác tệp trong đầu ra được xuất bản của bạn nếu bạn có một tham chiếu dự án Microsoft.VisualStudio.Web.CodeGeneration.Design, cần thiết cho các bộ điều khiển giàn giáo. Nếu điều đó đúng với dự án của bạn, hãy thay đổi tham chiếu gói trong .csprojtệp của bạn để bao gồmExcludeAssets="all"

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" ExcludeAssets="All" />

Ví dụ: *.csprojtập tin cũ

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UserSecretsId>aspnet-foo-4E53EF45-B3BE-4943-81BE-2449DC5AA2BC</UserSecretsId>
    <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
  </PropertyGroup>

  <ItemGroup>
    <!-- ... -->
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0"/>
  </ItemGroup>

  <ItemGroup>
    <!-- ... -->
  </ItemGroup>
</Project>

Tập tin mới *.csprojnên

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UserSecretsId>aspnet-foo-4E53EF45-B3BE-4943-81BE-2449DC5AA2BC</UserSecretsId>
    <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
  </PropertyGroup>

  <ItemGroup>
    <!-- ... -->
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" ExcludeAssets="All"/>
  </ItemGroup>

  <ItemGroup>
    <!-- ... -->
  </ItemGroup>
</Project>

4
Xin chào, ứng dụng của tôi sử dụng asp net core 3 và tôi đã thêm * .csproj ExcludeAssets = "All", nhưng điều này không hoạt động. Còn ý tưởng nào khác không?)
al.koval 2/12/19

@ al.koval dọn dẹp và xây dựng, hoặc xóa thư mục bin với bản phát hành của bạn, xây dựng lại.
Andrej Lucansky

2
Tôi gặp vấn đề tương tự. Tôi thậm chí đã cố gắng xóa hoàn toàn tham chiếu Microsoft.VisualStudio.Web.CodeGeneration.Design. Tôi vẫn còn rác này trong thư mục triển khai. Xóa thư mục bin exct. không giúp Doy bạn có ý tưởng nào khác không?
Ali Erdoğan

4

Trong trường hợp của tôi, nguồn của các thư mục được bản địa hóa này là từ gói Microsoft.AspNetCore.Mvc.Razor.R nbCompilation. Nó có một sự phụ thuộc vào Microsoft.CodeAnalysis.Razor. Bạn có thể đọc thêm về mục đích của gói tại đây: https://docs.microsoft.com/en-us/aspnet/core/mvc/view/view-compilation?view=aspnetcore-3.1

Bạn không thể loại trừ một tài sản khi cố gắng tận dụng gói. Công việc của tôi là bao gồm một cách có điều kiện tham chiếu gói bất cứ khi nào dự án ở chế độ gỡ lỗi. tham khảo gói điều kiện

Sau đó, tôi đã sử dụng một lệnh #if tiền xử lý để chạy mã có điều kiện cho phép biên dịch thời gian chạy dao cạo. biên dịch trước thời gian xử lý biên dịch dao cạo

Xin lưu ý: Bạn có thể cần xóa thư mục bin của mình để xem các thư mục bị xóa sau khi xây dựng. Ngoài ra, hãy chắc chắn rằng bạn đang xây dựng theo cấu hình giải pháp chính xác.

Tôi đã có thể tìm thấy một vấn đề Github mô tả kịch bản chính xác này, nhưng tiếc là nó không bao giờ được giải quyết. https://github.com/dotnet/extensions/issues/2247

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.