Tôi có một dự án trong giải pháp của tôi đã bắt đầu cuộc sống như một dự án thư viện C#. Nó không có gì quan tâm đến nó về mặt mã, nó chỉ được sử dụng như một sự phụ thuộc vào các dự án khác trong giải pháp của tôi để đảm bảo rằng nó được xây dựng trước tiên. Một trong những tác dụng phụ của việc xây dựng dự án này là một AssemblyInfo.cs được chia sẻ được tạo ra có chứa số phiên bản được sử dụng bởi các dự án khác.Làm cách nào để ngăn chặn các tệp MSBuild bên ngoài được lưu vào bộ nhớ cache (bằng Visual Studio) trong khi xây dựng dự án?
Tôi đã làm điều này bằng cách thêm dòng sau vào file csproj:
<ItemGroup>
<None Include="Properties\AssemblyInfo.Shared.cs.in" />
<Compile Include="Properties\AssemblyInfo.Shared.cs" />
<None Include="VersionInfo.targets" />
</ItemGroup>
<Import Project="$(ProjectDir)VersionInfo.targets" />
<Target Name="BeforeBuild" DependsOnTargets="UpdateSharedAssemblyInfo" />
Các tập tin tham chiếu, VersionInfo.targets, chứa những điều sau đây:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--
Some properties defining tool locations and the name of the
AssemblyInfo.Shared.cs.in file etc.
-->
</PropertyGroup>
<Target Name="UpdateSharedAssemblyInfo">
<!--
Uses the Exec task to run one of the tools to generate
AssemblyInfo.Shared.cs based on the location of AssemblyInfo.Shared.cs.in
and some of the other properties.
-->
</Target>
</Project>
Nội dung của VersionInfo. tệp mục tiêu có thể chỉ đơn giản là được nhúng trong tệp .csproj nhưng nó là bên ngoài vì tôi đang cố gắng biến tất cả điều này thành một mẫu dự án. Tôi muốn người dùng mẫu có thể thêm dự án mới vào giải pháp, chỉnh sửa tệp VersionInfo.targets và chạy bản dựng.
Vấn đề là sửa đổi và lưu tệp VersionInfo.targets và xây dựng lại giải pháp không có hiệu lực - tệp dự án sử dụng các giá trị từ tệp .targets như khi dự án được mở. Ngay cả dỡ hàng và tải lại dự án cũng không có hiệu lực. Để có được các giá trị mới, tôi cần phải đóng Visual Studio và mở lại nó (hoặc tải lại giải pháp).
Làm cách nào để thiết lập cấu hình này để cấu hình nằm ngoài tệp .csproj và không được lưu trong bộ nhớ cache giữa các bản dựng?
bản sao có thể có của [Cách tắt bộ nhớ đệm của các định nghĩa xây dựng trong Visual studio] (http://stackoverflow.com/questions/4919204/how-to-turn-off-caching-of-build-definitions-in- visual-studio) – yoyo
một bản sao có thể khác: http://stackoverflow.com/questions/2012742/how-to-stop-visual-studio-caching-imported-msbuild-scripts –